您的位置:首页 > 产品设计 > UI/UE

iOS8以上的版本,使用UIAlertController 替代 UIAlert 弹窗

2015-12-16 19:56 513 查看
从iOS8开始,UIAlertView和UIActionSheet都不再推荐了,应该开始使用一个新的API,UIAlertController。

UIAlertController继承自UIViewController,所以显示的方法不是show,而是普通的present。另外,如果程序用了这个API,那么在iOS7上会导致crash,所以需要版本兼容

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"这个是标题吗?" message:@"这个是内容吗?" preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"方法测试1");
}];

UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"其他" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"方法测试2");
}];

[alert addAction:cancelAction];
[alert addAction:otherAction];

[self presentViewController:alert animated:YES completion:nil];




可以看到,最大的区别,是UIAlertController不再使用delegate的方式来触发回调,而是直接传一个block

delegate和block并没有本质区别,只是触发回调的不同方式而已,解决的都是“在未来的某个时间,调用我”的问题。delegate的复用性更好一点,创建一个delegate实例之后,可以把它设置为多个控件的delegate,减少了重复。block的优势是更加直观,阅读起来更容易,因为代码都在一处,不需要跳来跳去地读代码

但是现在既然苹果官方使用block的频率越来越高,或许这也代表了一种趋势
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: