Monotouch:使用标签栏控制器和导航控制器。 AppDelegate 中有哪一个?

Posted

技术标签:

【中文标题】Monotouch:使用标签栏控制器和导航控制器。 AppDelegate 中有哪一个?【英文标题】:Monotouch: Using Tab bar controller and Navigation controller. Which one goes in AppDelegate? 【发布时间】:2014-05-02 22:31:30 【问题描述】:

我是 monotouch 的初学者,并创建了一个带有登录屏幕的应用程序,其中包含指向忘记密码页面和注册页面的链接作为导航控制器。根视图控制器是导航控制器。

现在,登录后,用户会看到一个带有标签栏控制器的标签式 UI(4 个标签)。每个选项卡都有自己的一组页面,我打算使用导航控制器进行导航。

实现这一点的最佳方式是什么?我的根视图控制器应该是 Nav.控制器或标签栏控制器?因为如果是第一次登录场景,作为 root 的导航控制器在逻辑上工作。但是如果保存了用户的凭据,那么我会在打开应用程序时直接打开选项卡式界面。感谢帮助

【问题讨论】:

【参考方案1】:

我建议从作为根视图控制器的导航控制器开始,它将登录屏幕设置为其唯一的视图控制器,以防您的用户尚未登录。从该屏幕您可以简单地推送您的注册和忘记密码屏幕也是如此(在基本导航控制器中,您不必为每个新屏幕设置新的导航控制器,除非您想以模态方式显示它(呈现而不是推送它)。

用户登录后,您只需将 AppDelegate 中的根视图控制器切换到成为新根的标签栏控制器。

对于标签栏中显示的每个标签,您定义一个导航控制器,该控制器再次包含您要在该特定标签项上显示的第一个屏幕。因此,如果您有 4 个选项卡,则设置 4 个导航控制器并在 UITabBarController.ViewControllers 中传递它们。

(我目前选择了完全相同的设置,所以我很确定它可以工作:-))。

【讨论】:

一个额外的问题@asp_net:你是否在你的appdelegate中设置了一个条件rootviewcontroller,它说if(storedcredentials_are_available) rootviewcontroller = tabbarcontroller; else rootviewcontroller = navigationcontroller? --登录/注册 确切地说,只需在 FinishedLaunching() 中决定是通过导航控制器显示登录屏幕还是通过标签栏控制器显示常规应用程序。

以上是关于Monotouch:使用标签栏控制器和导航控制器。 AppDelegate 中有哪一个?的主要内容,如果未能解决你的问题,请参考以下文章

Monotouch addsubview 动画

UI 导航控制器中的右键未在 Monotouch 中显示

组合标签栏和导航栏控制器出现问题

同时使用导航控制器和标签栏

使用标签栏和导航实例化深度视图控制器

导航和标签栏控制器未显示