我希望我的iOS应用程序遵循以下主要视图的常见模式,即访问应用程序需要注册或登录,因此,如果这是第一次在设备中运行应用程序或用户不是登录后,即显示的视图,否则显示另一个应用程序视图。主视图中的“注册”和“登录”按钮可以导航到相应的表单,或者他们可以以模态方式显示它们。一旦用户访问应用程序,它应该基于选项卡,类似于Twitter应用程序。
我的问题是:我的rootViewController
应该是什么?如果没有用户的凭据,则UINavigationController
在哪里推送主视图,如果有,则UITabBarController
?或者我应该根据是否具有凭据在app委托中动态设置rootViewController
?
谢谢
答案 0 :(得分:0)
我推荐第二个解决方案,首先使用登录屏幕作为root,然后在登录时更改rootViewController。您可以使用与模式演示文稿动画相同的方式设置动画。
答案 1 :(得分:0)
在UITabBarController
中嵌入UINavigationController
违反iOS设计理念。我不确定你是否会收到警告或黑屏,但肯定会发生错误。
无需在rootViewController
之间切换。
rootViewController
应该是根,在您的情况下,UITabBarController
连接到UINavigationController
或viewController
并且表单中有注册签名。如果凭证在那里,只需跳过该视图。
在根之间切换听起来有点不对劲。如果用户注销怎么办?如果用户有多个帐户并登录和注销怎么办?这是很多不需要的开关。
根据Apple的建议,UITabBarController应始终是您应用的根视图控制器。更有趣的阅读:
在标签栏界面中嵌入导航控制器时,您 应该只嵌入UINavigationController类的实例,和 不是作为子类的系统视图控制器 UINavigationController类。虽然系统提供自定义 导航控制器,用于选择联系人,选择图像和 实现其他行为,这些视图控制器通常是 旨在以模态呈现。有关如何使用的信息 特定的视图控制器,请参阅参考文档 类。