应用程序尝试模式地呈现一个主动控制器ios
我试图设置一个父视图控制器ViewController之前,它显示它可以提供callback,我做了这个使用PrepareForSegue
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"newQuarter"]) { [segue.destinationViewController setParentViewController:self]; } }
它坠毁给我的错误消息: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present modally an active controller.
所以我尝试使用另一种方法,并在button上设置了一个新的视图控制器,
- (IBAction) buttonClicked { NewViewController *newController = [[NewViewController alloc] init]; [newController setParentViewController:self]; [self presentViewController:newController animated:YES completion:nil]; }
但没有运气,它仍然给我同样的错误信息,任何人都可以请指教? 谢谢!
解决了这个问题,因为父视图控制器是一个tableViewController,它embedded在navigationViewContoller中。 这就是为什么segue应该被推动,而不是进行模态转换。
我有同样的问题,马修的解释似乎是正确的。
更换:
[self presentViewController:newController animated:YES completion:nil];
有:
[self.navigationController pushViewController:newController animated:YES];
这一行:
[self presentViewController:newController animated:YES completion:nil];
将执行一个MODAL segue,这是什么给出了错误。
用这条线代替 :
[self.navigationController pushViewController:newController animated:YES];
通过将新的视图控制器“压入”导航控制器堆栈(在XCode 6及更高版本中,这与在故事板上定义seguetypes的“show”相同),执行segue。 这就是为什么当你使用导航控制器时你需要这个。
删除这两行代码,不需要设置父级,如果您想要从NewViewController
向当前self
反向通信,请使用委托。
- Swift – 致命错误:数组索引超出范围
- iOS 11和iPhone X:embedded到UITabBarController时,UINavigationBar的工具栏间距不正确
- 如何使用自动布局更改uiview的高度?
- 如何在iPhone上以编程方式启用指导访问(Kiosk模式)?
- iOS核心animation:CALayer bringSublayerToFront?
- 我可以序列化一个RealmObject到JSON或Swift的Realm中的NSDictionary?
- iOS推送通知只显示徽章。 也需要声音和横幅
- 使用自定义的initWithCoder初始化视图
- CGContextDrawPDFPage内存泄漏 – 应用程序崩溃