TLDR
在呈现return string
之前是否有通知的方法。在弹出警报之前或之后,是否可以在UIAlert
中调用viewDidLoad
/ viewWillLoad
类型的函数?
我的问题
我的ViewController
从我的应用程序委托中的方法收到警报。我的View Controller
调用了应用程序委托中的方法,如果有问题,该方法然后可以发送View Controller
。尽管这似乎是不好的设计,但我无法更改。我需要某种知道警报出现的方式。
答案 0 :(得分:1)
您可以尝试
// do before
self.present(alert,animated:true) {
// do after
}
Sol1:
在调用Appdelegate函数时添加完成块,并且内部应用程序委托将该完成返回,如上面// //之后执行的代码
Sol2:
在应用程序委托和调用它的VC之间设置一个委托
Sol3:
使用
NotificationCenter.default.addObserver(
self,
selector: #selector(listenForNotification),
name: Notification.Name(rawValue: "AlertShowed"),
object: nil)
在VC内
这在Appdelagete警报完成中
NotificationCenter.default.post(name: Notification.Name("AlertShowed"), object:"")
答案 1 :(得分:0)
函数present(_:animated:completion:)
具有可选的完成处理程序completion
。如果您提供完成处理程序,则在显示模式后将立即调用它。您使用UIAlertControllers
显示present(_:animated:completion:)
,因此只需传入完成处理程序即可。
答案 2 :(得分:0)
如果要从appdelegate中的方法中打开警报,那么应该在显示警报之前应该如何在视图控制器上保留引用并在其上调用特定方法。
甚至,您甚至可以实施pub sub设计,让控制器在通知中心注册一个自定义通知名称,并在显示警报之前从appdelegate调用/发布该通知,不要忘记一旦控制器关闭,便移除观察者。
选择是您的