【发布时间】:2015-07-19 17:55:33
【问题描述】:
我有一个导航堆栈,包括:
UINavigationViewController
-> WelcomeViewController
-> RoleViewController
我想在 Welcome 和 Role 之间添加一个模态视图控制器。我通过情节提要添加了一个 ModalViewController,并从 WelcomeViewController 中的一个按钮为 ModalViewController 分配了一个 segue (Present Modally)。一切都很好,模态显示也很好。
现在我在 ModalViewController 我想关闭模式并从 Welcome to Role 执行原始 segue。我在 StackOverflow 上进行了一些搜索,并对如何做到这一点提出了不同的看法。这里列出了最合乎逻辑的方式: Dismissviewcontroller and perform segue
UIViewController *parentController = self.presentingViewController;
[self dismissViewControllerAnimated:YES completion:^(void){
[parentController performSegueWithIdentifier:@"segue_gotoRole" sender:self];
}];
模态被解除但segue没有被执行并且应用程序崩溃:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Receiver (<NavigationViewController: 0x78b96b80>) has no segue
with identifier 'segueToRole''
所以 self.presentingViewController 的目标是 UINavigationViewController 而不是实际呈现模式的视图控制器 WelcomeViewController。 为了成功,我需要找到一种方法来获取演示视图控制器,该控制器在情节提要中定义为模态中的 segue 发起者。
我尝试了很多不同的组合,例如self.parentViewController,self.presentationViewController,我什至尝试遍历导航堆栈以挑出 WelcomeViewController 并将其专门定位为执行 segue 的对象,但似乎没有任何效果。
请帮助我。 :)
【问题讨论】:
-
你是从导航控制器还是
WelcomeViewController展示你的视图控制器? -
在 WelcomeViewController(嵌入在 NavigationViewController 中)中按下按钮时会执行 modal。
标签: ios objective-c uiviewcontroller uinavigationcontroller