如何从 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 项目的不同导航堆栈中从一个视图控制器屏幕切换到另一个?