引子
UIAlertView
在iOS9之后被Apple废弃了,Apple推荐使用UIAlertController
。但是,有时候我们使用UIAlertController
时可能不是在一个UIViewController
中,而是在一个NSObject
中,但是UIAlertController
是需要通过UIViewController
才能present
,那么如何在NSObject
中正确使用UIViewController
呢?
这里我总结了常用的三种方法。
方法一
创建一个带透明UIViewController
的UIWindow
,在此上面推出UIAlertController
。代码如下:
1 | - (void)showAlert:(BOOL)animated { |
方法二
创建一个UIAlertController
的category
,创建一个 show 方法来推出。代码如下:
1 | #import "UIAlertController+Window.h" |
方法三
创建一个UIViewController
的category
,实现一个获取当前顶部可见的viewcontroller
的方法,然后在上面present
。代码如下:
1 | - (UIViewController *)visibleViewControllerIfExist { |
方法二来自于stackoverflow的问题How to present UIAlertController when not in a view controller?