从已关闭的视图控制器中显示警报
Posted
技术标签:
【中文标题】从已关闭的视图控制器中显示警报【英文标题】:Presenting an alert from a view controller that has closed 【发布时间】:2017-07-27 23:06:45 【问题描述】:我有一个 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!
谁能给点建议?
【问题讨论】:
您应该向父视图控制器发送通知(或使用委托等)并从那里呈现 @nathan 你能提供一个使用通知的例子吗? 委托示例:***.com/a/33229483/2124535,NotificationCenter 示例:***.com/a/29738348/2124535 【参考方案1】:如果您想在关闭视图控制器时显示警报,那么您可以使用完成块实现解除并在那里显示它。例如:
[self dismissViewControllerAnimated:YES completion:^(void)
// UIAlertController code here
];
【讨论】:
【参考方案2】:您可以将 UIWindow 与透明的 UIViewController 一起使用,然后在其上显示 UIAlertController。 下面的链接提供了 UIAlertController 上的一个类别,该类别在 Objective-C 中有一个 show 方法。你可以使用它。
链接:https://***.com/questions/26554894/how-to-present-uialertcontroller-when-not-in-a-view-controller
【讨论】:
以上是关于从已关闭的视图控制器中显示警报的主要内容,如果未能解决你的问题,请参考以下文章