引子
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?