【发布时间】:2013-07-16 20:41:57
【问题描述】:
我已经阅读了几篇关于切换窗口的rootViewController 的帖子,有时有人说在整个应用程序的生命周期中保持相同的rootViewController 比切换它更好,其他帖子与更改有关rootViewController 在应用程序的某个位置。我对此感到困惑,我在 Apple 的文档中找不到关于这一点的任何建议。
当您的应用中可能有不同的内容视图控制器时,最佳做法应该是什么?例如,假设您有一个选项卡式应用程序 (UITabBarController),您希望首先显示登录或注册 (UINavigationController) 的欢迎视图:
1) 使用固定的rootViewController。我认为您应该将UITabBarController 设置为rootViewController,因为应用程序的核心是选项卡,但如果需要用户凭据,则在UITabBarController 中设置UINavigationController,隐藏选项卡栏,以推送欢迎视图并导航到登录/注册视图控制器。
2) 接近切换rootViewController。首先,如果需要用户凭据,请将UINavigationController 设置为rootViewController 以显示欢迎视图并导航到登录/注册,一旦成功提供用户凭据或成功创建帐户,将rootViewController 切换到UITabBarController 显示核心选项卡式应用程序。
如果最好的通用方法是根据需要切换rootViewController,您会考虑哪些内存管理注意事项?我是否需要在 AppDelegate 中有两个 strong 属性(UITabBarController 和 UINavigationController)?切换rootViewController 时视图控制器之间的过渡又如何:它会是平滑的,还是应该为它设置动画?
提前致谢
【问题讨论】:
-
这可能会关闭,因为您的问题基本上是在询问人们的意见。我会选择选项 1。当您需要用户登录时,将登录屏幕显示为根控制器上的模式视图控制器。当他们成功登录时关闭它。无需切换根控制器。
-
@rmaddy 谢谢。我认为如果只有登录视图,在根目录顶部显示登录视图将是最好的方式,但在这种情况下,我没有唯一的登录视图,我有一个带有两个按钮和一个欢迎视图 -> 登录/注册视图导航层次结构,那么以模态方式呈现这种层次结构也应该是最好的方式吗?
-
@rmaddy 对 AppsDev 的评论有什么进一步的想法吗?干杯
标签: ios uiviewcontroller appdelegate uiwindow rootview