自定义AlertView 之囧事
昨天被 AlertView、AlertController虐了 ...
然鹅发现, 原生的AlertView不管你在哪里调用(比如说cell里面的button点击调用、view里面调用都OK), 但 若你在同一个类里面用了两个不同的AlertView, 在执行AlertView里的点击事件时 那就悲剧了,方法
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
}
是根据被点击按钮的索引处理点击事件,也就是说当你在同一个类中使用了两个不同AlertView(图1和图2), 点击时,两个AlertView的确定按键都是触发这个方法, 可以通过给定不同的tag值来判断是触发的哪一个AlertView里的button....
而自定义的AlertView 需要依靠Viewcontroller 来将它弹出 即需要调用
[myViewController presentViewController:alertController animated:YES completion:nil];
然鹅, 我昨天就是掉这个坑里半天.囧rz
最后 (づ。◕‿‿◕。)づ
如果你想要在其他地方比如view里面添加自定义的AlertView 可以这样写
UIWindow *window =[[[UIApplication sharedApplication] delegate] window];
[self addSubview: alertView];
注: 这样写之后, 提示框只出现在view中,而view所在的ViewController里面提示框将不会出现(若需要出现,写代理方法再传回去,简直不要太麻烦...)
AlertController
就我个人而言, 比较喜欢使用AlertController
附上事例代码
里面的block 很明显 点击按键之后你可以根据自己的要求 写到block里面, 各自安好 互不干扰. 简直棒棒哒!
然鹅, 它也依赖具体的viewcontroller弹出alertcontroller
可以通过
[UIApplication sharedApplication].keyWindow.rootViewController;
访问到根视图控制器,然后再用根视图控制器来present...
口语化太重, 语文水平 估计还老师还得差不多了ჰჰჰ❛‿❛ჴჴჴ
------end-------