iOS中常见方案的根视图控制器问题

时间:2013-06-05 06:57:13

标签: ios login uiviewcontroller uinavigationcontroller uitabbarcontroller

我希望我的iOS应用程序遵循以下主要视图的常见模式,即访问应用程序需要注册或登录,因此,如果这是第一次在设备中运行应用程序或用户不是登录后,即显示的视图,否则显示另一个应用程序视图。主视图中的“注册”和“登录”按钮可以导航到相应的表单,或者他们可以以模态方式显示它们。一旦用户访问应用程序,它应该基于选项卡,类似于Twitter应用程序。

我的问题是:我的rootViewController应该是什么?如果没有用户的凭据,则UINavigationController在哪里推送主视图,如果有,则UITabBarController?或者我应该根据是否具有凭据在app委托中动态设置rootViewController

谢谢

2 个答案:

答案 0 :(得分:0)

我推荐第二个解决方案,首先使用登录屏幕作为root,然后在登录时更改rootViewController。您可以使用与模式演示文稿动画相同的方式设置动画。

答案 1 :(得分:0)

UITabBarController中嵌入UINavigationController违反iOS设计理念。我不确定你是否会收到警告或黑屏,但肯定会发生错误。

无需在rootViewController之间切换。 rootViewController应该是根,在您的情况下,UITabBarController连接到UINavigationControllerviewController并且表单中有注册签名。如果凭证在那里,只需跳过该视图。

在根之间切换听起来有点不对劲。如果用户注销怎么办?如果用户有多个帐户并登录和注销怎么办?这是很多不需要的开关。

根据Apple的建议,UITabBarController应始终是您应用的根视图控制器。更有趣的阅读:

  

在标签栏界面中嵌入导航控制器时,您   应该只嵌入UINavigationController类的实例,和   不是作为子类的系统视图控制器   UINavigationController类。虽然系统提供自定义   导航控制器,用于选择联系人,选择图像和   实现其他行为,这些视图控制器通常是   旨在以模态呈现。有关如何使用的信息   特定的视图控制器,请参阅参考文档   类。

Link