2010-05-28 90 views
1

是否有可能通過該屏幕的UIViewController從一個xib加載其視圖的單個iPhone屏幕,但是隨後從另一個xib文件加載內容的另一個UIView?如果是這樣,是否有可能通過單獨的自定義UIViewController子類從屏幕的其餘部分處理嵌套視圖的事件?如果這兩件事都是可能的,它們也是可取的嗎?iPhone - 嵌套視圖和控制器

回答

7

這是可能的。蘋果建議不要一次在屏幕上激活多個UIViewController,所以他們會建議反對。如果第二個視圖控制器的原因是導航或模式,我建議只做。

用於加載其他視圖控制器(如導航控制器)的視圖控制器需要一些自己的屏幕空間,並使用其餘的視圖控制器加載另一個視圖控制器。沒事兒。這裏的標準是,只有一個控制器呈現內容,而另一個呈現導航。

視圖控制器可以加載另一個視圖控制器來執行一些有限的任務,如從列表中選擇一個項目或輸入一些文本。第二個視圖控制器可能只會填充部分屏幕。這裏的標準是一個控制器的模態行爲,並且只會顯示足夠長的時間以獲得一些用戶輸入。

至於在呈現內容的兩個視圖控制器之間拆分屏幕的一般情況,蘋果的建議是你有一個派生自UIViewController的類管理視圖。如果視圖足夠複雜以保證其他控制器,則從NSObject派生它們並使主視圖控制器與視圖一起管理子控制器。子控制器將主控制器作爲委託,並且主控制器將視圖傳遞給子控制器以管理但不擁有。

+0

優秀的,翔實的答案。聽起來像我可能「合格」......雖然你的回答讓我想到可能有更好的辦法。我對objective-c非常陌生,而且對於面向對象/ mvc編程來說還是比較新的。我認爲正確的方式來做我需要的東西可能是UIViewController的子類,然後從各種視圖控制器子類化該自定義類。謝謝。 – codemonkey 2010-05-29 00:39:29

+0

我爲我的大多數項目製作了自定義的UIViewController基類。 – drawnonward 2010-05-29 09:52:20