【发布时间】:2015-08-22 07:19:21
【问题描述】:
...并将其嵌入到导航控制器中。
我有一个故事板,我们称之为 MainStoryboard。
在主故事板上(initialViewController 顺便说一句),我有一个 ViewController,我们称之为 ViewControllerZ,嵌入在 NavigationController 中,我们称之为 NavigationControllerZ。
当用户点击按钮时……我有……
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewControllerZ *vcZ = (ViewControllerZ *)[storyboard instantiateViewControllerWithIdentifier:@"ViewControllerZ"];
vcZ.delegate = self;
vcZ.blah = blah;
[self.navigationController presentViewController:vcZ animated:YES completion:nil];
但是,这并没有为我提供所需的 NavigationController。我需要 MainStorybard 的 NavigationController,因为 ViewControllerZ 上的 NavBar 有一个 UIBarButtonItem Cancel,以关闭模态呈现的视图。
所以为了得到我试过的 NavigationController...
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
NavigationViewControllerA *navVcZ = (NavigationViewControllerZ *)[storyboard instantiateViewControllerWithIdentifier:@"NavigationViewControllerZ"];
ViewControllerZ *vcZ = (ViewControllerZ *)navVcZ.topViewController;
vcZ.delegate = self;
vcZ.blah = blah;
[self.navigationController presentViewController:vcZ animated:YES completion:nil];
但是,这不起作用并抛出“由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'应用程序试图以模态方式呈现活动控制器”。
我该如何解决这个问题?
【问题讨论】:
-
你在哪里工作
presentViewController?你也可以分享那部分代码吗? -
@aytunch 我正在从另一个故事板上的视图控制器中展示它。具体来说,它是视图控制器工具栏上的 uibarbuttonitem。点击它,这就是我在原始帖子中使用的确切代码。
-
我相信同一个VC不能作为rootviewcontroller添加到两个不同的
UINavigationController。阅读本文,这听起来像一个类似的问题,只是UITabBar与UIStoryBoard不同:Sharing same VC.. -
我仍然对它的呈现方式感到困惑。你能展示展示 VC 的代码吗?大概这就是抛出的线?该错误表明您正在展示一个已经在显示中的 VC,而不是刚刚从情节提要中加载的那个。
-
@GrahamPerks 我更新了我的问题。
[self.navigationController presentViewController:vcZ animated:YES completion:nil];
标签: ios objective-c cocoa-touch uiviewcontroller