iOS8以上的版本,使用UIAlertController 替代 UIAlert 弹窗
2015-12-16 19:56
513 查看
从iOS8开始,UIAlertView和UIActionSheet都不再推荐了,应该开始使用一个新的API,UIAlertController。
UIAlertController继承自UIViewController,所以显示的方法不是show,而是普通的present。另外,如果程序用了这个API,那么在iOS7上会导致crash,所以需要版本兼容
可以看到,最大的区别,是UIAlertController不再使用delegate的方式来触发回调,而是直接传一个block
delegate和block并没有本质区别,只是触发回调的不同方式而已,解决的都是“在未来的某个时间,调用我”的问题。delegate的复用性更好一点,创建一个delegate实例之后,可以把它设置为多个控件的delegate,减少了重复。block的优势是更加直观,阅读起来更容易,因为代码都在一处,不需要跳来跳去地读代码
但是现在既然苹果官方使用block的频率越来越高,或许这也代表了一种趋势
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的频率越来越高,或许这也代表了一种趋势
相关文章推荐
- IOS吐槽狂人:UITabelView全局表头和每个分区的表头和大小,设置区分表头的标题
- 关于UIViewController和UIView类中方法的使用
- leetcode -- Unique Binary Search Trees I&II -- 重点
- Repeated DNA Sequences
- 提升含有动态高度UITableViewCell的UITableView的运行效率
- 动态改变UITableView中的Cell高度
- MiniGUI 如何显示繁体字
- HDU 3177 Crixalis's Equipment(贪婪)
- UITableView中heightForRowAtIndexPath 产生 EXC_BAD_ACCESS 的原因
- 《iOS Human Interface Guidelines》——Live Photos
- String,StringBuffer与StringBuilder的区别??
- UITableView中heightForRowAtIndexPath 产生 EXC_BAD_ACCESS 的原因
- 自己以后开始一个新的项目的时候一定要给uiview写一些拓展的协议
- 详解如何让Android UI设计性能更高效
- EasyUI detailview 使用心得
- Webdriver Ui自动化测试,使用工厂方法生产不同浏览器的webdriver实例
- ps 修改图片大小(分辨率)(png图片)
- 【iOS】六种手势UIGestureRecognizer
- segue使用及区别点
- UI之tableView的两个协议UITableViewDataSource、UITableViewDelegate