【问题标题】:How to switch view controllers from UIApplication如何从 UIApplication 切换视图控制器
【发布时间】:2014-08-30 13:15:22
【问题描述】:

基本上,我在 uiapplication 中设置了一个计时器来检查用户是否空闲,我想要发生的是,如果用户空闲足够长的时间,顶部的视图控制器将是初始登录。

计时器部分有效,我用 NSlog 试过了。

所以基本上,我需要找出当前的视图控制器,如果不是注册或登录视图控制器,它应该去初始登录视图控制器。

如何在 UIapplication 类中获取当前视图控制器,然后进行切换?

如果有任何帮助,我使用的是导航控制器,而不是标签栏控制器。

【问题讨论】:

    标签: ios objective-c uiviewcontroller uiapplication


    【解决方案1】:

    您可以使用 sharedApplication 单例检索应用程序的根视图控制器:

    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    UINavigationController *rootNavController = appDelegate.mainWindow.rootViewController;
    // Change to what you want your rootViewController
    

    【讨论】:

    • 你想要mainWindow,而不是windows。此外,指出要获得对当前视图控制器的引用可能会有所帮助,他可能需要在导航控制器上调用lastObject
    • 我现在为您修复了它,因为您的修复仍然错误。不过,在您区分导航控制器和位于导航堆栈顶部的视图控制器之间的区别之前,我仍然无法对此表示赞同。
    • 你错过了修复 rootNavController 应该是一个参考...悲伤的脸 ;-)
    【解决方案2】:

    您可以在 navigationController 堆栈上查看所有视图控制器。

    见self.navigationController.topViewController和self.navigationController.visibleViewController;

    【讨论】:

    • 如果他的应用代理没有navigationController 属性(它可能不应该)?
    • "如果有帮助的话,我使用的是导航控制器,而不是标签栏控制器。"
    • 我看到并阅读了这部分问题。他使用导航控制器本身并不能保证他的应用委托类具有navigationController 属性,也不能保证他正确设置了该属性,即使他已经创建了该属性。
    猜你喜欢
    • 1970-01-01
    • 2011-06-05
    • 2012-06-15
    • 2012-04-26
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多