从已关闭的视图控制器呈现警报
问题描述:
我有一个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!
谁能指教?
答
如果您希望在关闭视图控制器时显示警报,那么您可以通过完成块来执行解除操作并将其显示在那里。例如:
[self dismissViewControllerAnimated:YES completion:^(void) {
// UIAlertController code here
}];
答
您可以使用带有透明UIViewController的UIWindow,然后在其上显示UIAlertController。 下面的链接提供了一个UIAlertController类,它在Objective-C中有一个show方法。你可以使用它。
你应该发送通知(或使用委托等)到父视图 - 控制,并从那里 – nathan
@nathan目前它你能提供使用的通知的例子吗? – user2181948
授权示例:https://stackoverflow.com/a/33229483/2124535,NotificationCenter示例:https://stackoverflow.com/a/29738348/2124535 – nathan