1. 当需要监听事件或进行对象间的通信时,选择通知还是代理?
共同点:
利用通知和代理,都能完成对象之间的通信
(eg:A对象告诉D对象发生了什么事情,A对象传递数据给D对象)
不同点:
代理:一对一关系(1个对象只能告诉另1个对象发生了什么事情), 代理只能1对1.
通知:多对多关系(1个对象能告诉N个对象发生了什么事情,1个对象能得知N个对象发生了什么事情)。
如何监听设备旋转,电池电量改变,贴近脸部等事件。
通知。通过[UIDevice currentDevice] 单例,获取设备对象。对象中有设备相关的信息:电池电量值、电池状态、设备类型、设备系统等
UIDevice发送的通知的常量:
UIDeviceOrientationDidChangeNotification 设备旋转
UIDeviceBatteryStateDidChangeNotification 电池状态改变
UIDeviceBatteryLevelDidChangeNotification 电池电量改变
UIDeviceProximityStateDidChangeNotification 近距离传感器,如贴近脸部。
// 通知:监听系统的其他事件。
UIDevice *device = [UIDevice currentDevice]
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(m1:)
name:UIDeviceOrientationDidChangeNotification object:device];
2. 静态单元格
注意:使用静态单元格,必须使用UITableViewController控制器。
静态单元格:不会随着数据的改变而改变,当在storyboard中设计的是什么样子,最后运行效果就是什么样子。不会随着数据的变化而变化。如果要改变静态单元格数据,必须storyboard重新修改代码。适合不经常变的页面,简单,开发快。
动态单元格:只要修改了数据模型,对应的单元格内容就发生变化。
动态和静态
// 静态单元格演示:QQ动态页面
TableView选择属性:Content---Static Cells/Dynamic Prototypes。
新建控制器,使用UITableViewController,拽入后会自动有TableView
选中里面的Table View,选Content,再选Static Cells。设置UITableView为静态单元格。
选中其中的Cell,选Style--Basic(左边图,中间文本,右边箭头)。
选中UITableView,选择属性,先选择Style:Grouped;Sections设置组数量3。
生成3组,每组都没有组标题。
2023/06/02 周五