页面上有一个退出按钮,点击后我想发布ok-cancel提示,这是我的代码:
UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Tips" message:@"Sign out?" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {
}];
[alertVC addAction:cancelAction];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
[self dismissViewControllerAnimated:YES completion:nil];
}];
[alertVC addAction:okAction];
[self presentViewController:alertVC animated:YES completion:nil];
App因崩溃而崩溃:由于未捕获的异常'UIViewControllerHierarchyInconsistency'而终止应用程序,原因:'子视图控制器:应该有父视图控制器:但是请求的父级是:' 我将代码复制到一个简单的演示中。它运作良好,但它在我的项目中崩溃。我尝试使用不推荐使用的UIAlertView,它没关系。我使用UIAlertController的任何问题
答案 0 :(得分:0)
从异常开始,我认为您的视图控制器的层次结构不正确。 所以这是显示alertviewcontroller的最简单方法。
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:yourAlertController animated:YES completion:nil];
或者让你的应用程序获得最顶级的viewController,然后在该viewController上显示alertViewController。以下是在您的应用中找到最顶层viewController的方法。
- (UIViewController*) topMostController
{
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
return topController;
}