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

问题描述:

我有一个Objectve C iOS应用程序,我试图从正在关闭的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! 

谁能指教?

+0

你应该发送通知(或使用委托等)到父视图 - 控制,并从那里 – nathan

+0

@nathan目前它你能提供使用的通知的例子吗? – user2181948

+0

授权示例:https://stackoverflow.com/a/33229483/2124535,NotificationCenter示例:https://stackoverflow.com/a/29738348/2124535 – nathan

如果您希望在关闭视图控制器时显示警报,那么您可以通过完成块来执行解除操作并将其显示在那里。例如:

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

}]; 

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

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