iOS中常见场景的根视图控制器问题

iOS中常见场景的根视图控制器问题,ios,login,uiviewcontroller,uinavigationcontroller,uitabbarcontroller,Ios,Login,Uiviewcontroller,Uinavigationcontroller,Uitabbarcontroller,我希望我的iOS应用程序遵循一种常见模式,即在主视图中需要注册或登录才能访问该应用程序,因此,如果是第一次在设备中运行该应用程序或用户未登录,则会显示该视图,否则会显示另一个应用程序视图。主视图中的“注册”和“登录”按钮可以导航到相应的表单,也可以以模式显示。一旦用户访问应用程序,它应该是基于选项卡的,类似于Twitter应用程序 我的问题是:我的rootViewController应该是什么?AUINavigationController如果没有用户凭据,将主视图推送到哪里;如果有,将推送到哪

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

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


谢谢

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

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

无需在
rootViewController
之间切换。
rootViewController
应该是根,在您的情况下,就是连接到
UINavigationController
或带有注册登录表单的
viewController
。如果有凭据,只需跳过该视图

在根之间切换听起来有点不合适。如果用户注销怎么办?如果用户有多个帐户并登录和注销,该怎么办?这是许多不必要的开关

根据苹果公司的建议,UITabBarController应该始终是应用程序的根视图控制器。更有趣的阅读:

在选项卡栏界面中嵌入导航控制器时 应仅嵌入UINavigationController类的实例,以及 不是属于的子类的系统视图控制器 UINavigationController类。虽然系统提供了自定义 导航控制器,用于选择联系人、拾取图像和 为了实现其他行为,这些视图控制器通常是 设计为以模式呈现。有关如何使用 有关特定的视图控制器,请参阅参考文档 班级


您可以将主UITabBarController作为根用户,并在第一页检查登录凭据。如果没有,则显示登录viewcontroller模式。@Eric我需要显示一个带有“登录”和“注册”按钮的主视图,然后是请求凭据/用户数据的表单,而不是直接呈现一个符号,如果我认为<代码> UINavigationController <代码>作为<代码> ROOTVIEW控制器和我不<代码> t改变它,即使我已经有证书,我< /Calp>将嵌入<代码> UITabBarController <代码>…显然我在这两个之间切换。编辑了我的答案。如果我保留
UITabBarController
作为
rootViewController
,我可以用隐藏在底部选项卡栏的按钮显示主视图吗?当然可以。您可以始终隐藏选项卡栏,使其看起来像普通视图。如果你在做这件事时遇到困难,请提出一个新问题。所以。。。重点是使用“登录”/“注册按钮”设置主视图,就好像它是其中一个选项卡项的视图,但隐藏选项卡栏?这比切换
rootViewController
更合适吗?