从已关闭的视图控制器呈现警报

时间:2017-07-27 23:06:46

标签: ios objective-c uiviewcontroller uialertcontroller

我有一个iOS Objective-C应用程序,我试图从正在关闭的UIViewController中显示一个UIAlertController。我尝试在AppDelegate中添加此常用解决方法:

- (UIViewController *)currentTopViewController
{
   UIViewController *topVC = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
   while (topVC.presentedViewController)
   {
     topVC = topVC.presentedViewController;
   }
  return topVC;
}

跟:

[appDelegate.currentTopViewController presentViewController:alert animated:YES completion:nil];

但是这个错误仍然出现:

Warning: Attempt to present UIAlertController on MyViewController whose view is not in the window hierarchy!

有人可以提供建议吗?

2 个答案:

答案 0 :(得分:0)

如果要在关闭视图控制器时显示警告,则可以使用完成块实现解除并在那里显示。例如:

[self dismissViewControllerAnimated:YES completion:^(void) {
  // UIAlertController code here

}];

答案 1 :(得分:0)

您可以将UIWindow与透明的UIViewController一起使用,然后在其上显示UIAlertController。 下面的链接提供了一个关于UIAlertController的类别,它在Objective-C中有一个show方法。你可以使用它。

链接:https://stackoverflow.com/questions/26554894/how-to-present-uialertcontroller-when-not-in-a-view-controller