在最顶部的 UIViewController 上显示 UIAlertController

Posted

技术标签:

【中文标题】在最顶部的 UIViewController 上显示 UIAlertController【英文标题】:Displaying UIAlertController on top most UIViewController 【发布时间】:2019-05-14 19:49:28 【问题描述】:

我正在使用 UIAlertController 创建警报,我希望警报显示在当前正在显示的任何视图控制器上。这个应用程序有大约 30 个不同的视图控制器,我需要在当前显示的任何视图上显示警报。有没有人建议以最简单的方式做到这一点。

我使用 NSTimer 每 30 秒在其中一个视图上调用一个函数,以寻找来自 SOAP 服务的响应。如果我的 SOAP 服务有响应,我希望能够知道当前正在使用哪个视图并显示警报。

【问题讨论】:

【参考方案1】:

您可能希望轮询 SOAP 服务的代码生成广播通知,并且您的每个视图控制器都将观察该通知。有可能所有的 viewController 都会同时收到通知,但我怀疑只有前台 viewController 可以对其进行操作(或者,您需要某种方式让 viewController 知道它是活动的 viewController,如果不是激活一个,忽略通知)。或者,您可以在 viewController 出现时执行 addObserver,并在 viewController 消失时移除观察者。

看到这篇文章:

Send and receive messages through NSNotificationCenter in Objective-C?

【讨论】:

谢谢迈克尔。这正是我所需要的。我给了你一个赞成票,但我没有足够的代表来发帖。【参考方案2】:

self.window?.rootViewController?.navigationController?.topViewController 返回栈顶视图控制器

【讨论】:

以上是关于在最顶部的 UIViewController 上显示 UIAlertController的主要内容,如果未能解决你的问题,请参考以下文章

关闭 UIViewController 而不关闭其顶部的警报

多模态 UIViewControllers |仅关闭顶部模态 UIViewController

如何在 UIViewController 的 tableView 顶部添加自定义视图并能够一起滚动

Interface Builder 布局 UIViewController xib 用于更改顶部栏高度的方向

在swift中,如何在顶部保持一个UIViewController().view?比如UIAlertController

当 UIViewController 回到顶部时,iOS 中是不是有委托函数来获得通知?