请澄清一些关于UIViewController
我找到了这篇文章Abusing UIViewController
,这里是链接链接1和链接2
和总结点
这是作者(和 Apple)的建议 简而言之:
- 一个(并且只有一个)视图控制器应该负责 UIView 的整个层次结构(或全屏)。
- 大多数情况下,您应该每个屏幕只使用一个视图控制器。本质上
rootViewController
,当前的UIWindow
应该是唯一UIViewController
具有可见视图的。 - 每个不同的屏幕应该有一个不同的视图控制器,即一个控制器不能控制多个屏幕。
- 您不应该
UIViewControllers
在视图层次结构中嵌套自定义。 - 如果不止一个
UIViewController
挂起应用程序的UIWindow
,则只有其中一个会收到有关方向更改的消息。其他人将不会收到这些消息。 - 嵌套
UIViewControllers
不能保证或可能接收有关方向更改或生命周期消息(例如viewDidAppear:
, )的消息viewWillAppear:
,即使它们继承自. 只有最上面的人肯定会收到这些消息。viewDidDisappear:
viewWillDisappear:
UIViewController
UIViewController
请清除第 2 点和第 3 点,
因为当我们使用UINavigationController
或UITabBarController
使用UIViewController
. 而ios设备只有一个屏幕......
本文Abusing UIViewController高亮苹果建议
注意:如果要将视图层次结构划分为多个子区域并分别管理每个子区域,请使用通用控制器对象(从 NSObject 下降的自定义对象)而不是视图控制器对象来管理每个子区域。然后使用单个视图控制器对象来管理通用控制器对象。
在苹果文档Coordinating Efforts Between View Controllers
中,在苹果的标题下
很少有 iOS 应用程序只显示一屏内容。相反,它们在首次启动时显示一些内容,然后显示和隐藏其他内容以响应用户操作。这些转换提供了一个统一的用户界面,可以显示大量内容,而不是一次显示所有内容......
我的要求是不要使用任何容器或模式或弹出框,我想做手动管理,我有两个视图控制器VC1
& VC2
。VC1
是根视图控制器现在我想切换/中转/移动到VC2
我应该怎么做?
VC1
应该是唯一的子类,UIViewController
并且VC2
应该是NSObject
管理层次结构中特定视图的子类VC1
?(apple doc 的 show hide 事情)。VC2
也可以是 的子类UIViewController
,我只是VC1
从根视图中删除并添加VC2
为根视图?
或者什么是正确的方法?