如何从 Appdelegate 导航到另一个视图控制器

Posted

技术标签:

【中文标题】如何从 Appdelegate 导航到另一个视图控制器【英文标题】:How to navigate from Appdelegate to another viewcontroller 【发布时间】:2012-06-19 12:31:57 【问题描述】:

在我的 iPhone 应用程序中,我使用的是 Pushnotifications。当我收到通知时,我想从当前视图控制器移动到另一个视图控制器。我在 appdelegate 本身中写了- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex。我正在使用基于视图的应用程序,所以我想使用presentModalViewController(我认为)。我使用了以下代码:

UIViewController *view = (UIViewController*)self.viewController.presentedViewController;
                [view presentModalViewController:self.anotherVC animated:NO];

但出现错误

2012-06-19 17:47:52.521 iPhoneApp[1450:607] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target <HomeScreenVC: 0x1fb77cc0>.'

这里出了什么问题?任何想法。

编辑 我将详细说明这个问题: 我有视图控制器 VC1、VC2、VC3 和 VC4。我的 rootviewcontroller 是 VC1。如果当我在 VC2 或 VC4 时收到推送通知,当我单击通知警报的确定按钮时,我想移动到 VC3。但是警报视图的委托方法在 appdelegate.m 中。

我已经更新了我的代码,比如

        self.menuVC = [[MenuScreenVC alloc] initWithNibName:@"MenuScreenVC" bundle:nil];
        UIViewController *view = (UIViewController*)self.viewController.presentedViewController;
        [view presentModalViewController:self.menuVC animated:NO];

现在,如果我在 VC2,我可以导航到 VC3,如果我在 VC4,我不能。请帮忙

【问题讨论】:

【参考方案1】:

代替您使用的内容,请执行以下操作

[self.window.rootViewController presentModalViewController:self.anotherVC animated:NO];

【讨论】:

以上是关于如何从 Appdelegate 导航到另一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 Xcode Swift 项目的不同导航堆栈中从一个视图控制器屏幕切换到另一个?

如何从 appdelegate 呈现和关闭模态视图?

如何从一个视图控制器导航到另一个视图控制器

如何在ios中从一个视图导航到另一个视图?

如何通过单击按钮在 Swift UI 中从一个视图导航到另一个视图

如何从 popoverpresentation 视图控制器导航到另一个视图控制器