繁体   English   中英

如何在嵌入在UINavigationController中的另一个Storyboard上以模块化方式呈现UIViewController?

[英]How can I modally present a UIViewController on another Storyboard that's embedded in a UINavigationController?

...并将其嵌入导航控制器中。

我有一个故事板,我们称它为MainStoryboard。

在主情节提要板上(initialViewController BTW都不是),我有一个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'而导致终止应用程序,原因:'应用程序试图以模态形式显示活动控制器”。

我该如何解决这个问题?

从错误看来,您像这样添加了navVcZ作为子视图控制器:

[self.navigationController presentViewController:vcZ animated:YES completion:nil];
[self.navigationController addChildViewController:navVcZ];

您可以直接显示navVcZ

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:navVcZ animated:YES completion:nil];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM