蘋果寫了UIKit,所以他們可以做他們喜歡的。
有很多的東西引擎蓋下發生:
- 查看{意志,難道} {出現,消失}
- 視圖旋轉(唉,頭痛)
- UIViewControllerWrapperView,這有時是UIViewController.view的父級。或者其他的東西。
- UIViewController.navigationController/tabBarController/parentViewController/modalViewController
- Popovers很奇怪。我不知道他們是如何融入其中的。
如果你寫你自己的看法,你也許可以使用的UIViewController來控制他們
脫身,但不要指望所有的神奇行爲的UIKit給予一個「適當的」視圖控制器。
編輯:我可能不應該StackOverflow時,它遲到了。我的意思是這樣的:
如果視圖是由UIViewController控制的,視圖控制器應該存在於視圖控制器層次結構中(即像presentModalViewController:animated:
這樣的函數)。這允許UIKit處理複雜的位。
當你使用類似[fooSubview addSubview:viewController.view]
之類的東西時,UIKit可能不會做所有它應該做的事情。什麼保留viewController
?如果有內存警告並且fooSubview被卸載,會發生什麼?
如果你設置了類似viewController.view.frame = (CGRect){{0,0},{320,480}}
的東西,你也會遇到麻煩:UIViewController根據當前狀態/導航/選項卡/ etc欄設置框架。它可能會重新設置它,或者它可能會使用框架來決定如何佈置視圖控制器(我注意到了這種行爲;它很混亂)。如果你改變viewController.view.transform
,在視圖旋轉中可能會發生奇怪的事情,因爲視圖變換是UIViewController用於定位的方式(以及狀態欄和一堆其他事物)。
只有一種很好的支持例外,我所知道的:
[window addSubview:viewController.view];
[window makeKeyAndVisible];
(事實上,你可以堅持viewController.view窗口內全窗口視圖裏面;我不知道這是如何工作的)
我覺得在OS 4.0+中你應該設置window.rootViewController = viewController
來代替。
您可以發佈鏈接到參考嗎?儘管它們填充或不填滿屏幕,但我總是爲小視圖創建viewController。想查看後果和良好做法,請張貼鏈接。 。 。 – 2010-09-23 08:45:52
@Raj:我在我的問題頂部添加了一個鏈接 – Casebash 2010-09-23 23:16:48