【问题标题】:ios: Accessing a navigation controller from app delegateios:从应用程序委托访问导航控制器
【发布时间】:2012-12-17 02:36:01
【问题描述】:

我有一个接收推送通知的应用。在 didReceiveRemoteNotifications 中,我想让应用程序在应用程序的导航控制器(恰好是根视图控制器)中显示一个特定的视图控制器。实现这一目标的最佳方法是什么?我可以在应用程序委托中获得对导航控制器的引用吗?

编辑:这是我现在尝试使用的代码。它似乎使用了正确的导航控制器,但它根本不显示视图控制器,只是一个空白屏幕:

        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        EventDetailViewController *destCon = [storyboard instantiateViewControllerWithIdentifier:@"EventDetailViewController"];
        destCon.event=notifyEvent;
        UINavigationController *navController =(UINavigationController *) self.window.rootViewController;
        [navController pushViewController:destCon animated:YES];

这是我所看到的:

【问题讨论】:

    标签: ios uinavigationcontroller push-notification pushviewcontroller uiapplicationdelegate


    【解决方案1】:

    我使用类似下面的东西对我有用,尝试修改以适应您的使用

    Stoaryboard 是您的故事板的名称,当您收到通知时,您可以调用您的 rootview LoginViewController

    确保您在界面生成器中的视图控制器设置为yourControllerName,在下面的示例中为LoginView

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    {
    
            //replace and push rootview manually
            UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
            LoginViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"LoginView"];
            UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:ivc];
            self.window.rootViewController =nil;
            self.window.rootViewController = navigationController;
            [self.window makeKeyAndVisible];
    }
    

    【讨论】:

    • 这将创建一个新的导航控制器。我想使用当前在屏幕上的现有导航控制器。这样用户就可以按下后退按钮并返回到原来的位置。
    【解决方案2】:

    如果你的导航控制器是窗口的根视图控制器,那么你可以使用

    (UINavigationController *)self.window.rootViewController
    

    从应用委托访问您在情节提要中创建的委托。

    【讨论】:

    • @JamesHarpe,尝试记录 self.window.rootViewController 看看它会给你什么。
    • 这在 swift 中怎么样?
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 2019-06-28
    • 1970-01-01
    相关资源
    最近更新 更多