2011-01-28 59 views
2

我的問題是關於視圖控制器,代表和所有一般。我對UIView,UIViewController,Delegates和Sources感到很滿意,就像UITableView一樣。這一切都有道理。MVC基礎知識:我應該添加一個UIViewController,一個委託或源到我的自定義視圖嗎?

現在我已經實現了我的第一個真正的自定義視圖。沒有涉及XIB。這是一個非常類似於郵件應用程序中的自動完成地址選擇器。它會在添加收件人時創建那些藍色按鈕,並且具有與原件一樣的所有鍵盤支持。

它的子類UIView。沒有控制器,沒有委託,沒有來源。我想知道我是否應該有其中之一?或者全部,使其成爲一個乾淨的實施。

我只是不能把我的手指放在視圖控制器在我的情況下會產生的感覺。我的自定義視圖很像控件,UIButton也沒有控制器。 在我看來,它會控制什麼?

我的一些想法:

對於源:目前認爲具有包含它自動填充地址屬性「PossibleAutocompleteRecipients」。我想這將是一個「源」實施的候選人。但這真的值得嗎?我寧願將控制器傳遞給視圖並將該屬性放入控制器中。

可以使用「SelectedRecipients」屬性檢索選定的收件人。但我認識到,意見不應該存儲價值。那去哪裏?進入控制器?

那麼所有的屬性如「AllowSelectionFromAddressBook」呢?再次,如果我與UIButton比較,這些屬性類似於按鈕的「安全」屬性。所以他們被允許在視圖中。

委託可能有像「WillAddRecipient」,「WillRemoveRecipient」等方法,並且用戶可以返回TRUE/FALSE來防止動作發生。正確?

我應該從UIControl首先繼承而不是從UIView繼承?

最後但並非最不重要的是:如果設備旋轉,我的自定義視圖將完美旋轉。爲什麼不是所有的觀點?爲什麼有些需要一個實現ShouldAutoRotateToDeviceOrientation()的控制器?

這是否有道理我上面寫的?最後,我將在我的網站上提供源代碼,因爲我花了一些時間來實現它,我想分享它,因爲我還沒有在MonoTouch中找到類似於Mail-App的自動完成控件的類似實現。 我只是想盡可能地學習和理解,並將其包含在源代碼中。

René

回答

1

我可以回答你的問題的一部分。

我不能把我的手指上 意義上的視圖控制器將使在 我的情況

的視圖控制器負責處理視圖的狀態轉換(負載,出現,旋轉等)這些轉換主要在使用導航組件(UINavigationViewController,UITabBarController)時使用。這些組件需要接收一個ViewController來處理視圖的轉換。

例如,當您在UINavigationViewController上推送ViewController時,它將導致ViewDidLoad,ViewWillAppear,ViewDidAppear。它也會導致當前ViewController的ViewWillDisappear,ViewDidDisappear。

因此,如果您的應用程序只有一個縱向視圖,則不需要ViewController。您可以將自定義視圖添加爲主窗口的子視圖。

+0

我明白了一般的視圖控制器的感覺。但不是在這種情況下,我的控制沒有工作正常。但是你在哪裏畫線?什麼時候應該使用視圖控制器?即使我的控制旋轉也很好。一個UITextField也沒有控制器,也可以正常旋轉。這就是讓我困惑的一點。 – Krumelur 2011-02-08 20:43:52

相關問題