一、UITableView的代理方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#pragma mark 每一行的高度
 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
 
  
 
#pragma mark 选中了某一行就会调用
 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 
  
 
#pragma mark 取消选中了某一行就会调用
 
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
 
  
 
#pragma mark 当用户提交了一个编辑操作就会调用(比如点击了“删除”按钮)
 
// 只要实现了这个方法,就会默认添加滑动删除功能
 
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
 
  
 
#pragma mark 当移动了某一行cell就会调用
 
// 只要实现了这个方法,就会默认添加排序功能
 
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

 

 

二、修改Cell的状态

1.最好通过“修改模型数据”来修改Cell的状态

 

2.修改步骤

1> 修改模型数据

2> 刷新表格

* 整体刷新:reloadData(最重要)

* 局部刷新:reloadRowsAtIndexPaths:withRowAnimation:

 

三、UITableView常见方法

1.取消选中某一行(去掉cell选中时默认的蓝色背景)

- (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated;

 

2.局部刷新(仅仅刷新indexPaths数组中装着的行)

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

 

3.整体刷新(屏幕中的每一行都刷新)

- (void)reloadData;

 

4.直接删除界面上的行数(要求模型数据也要删掉对应的数量)

- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

 

5.设置编辑模式

@property(nonatomic,getter=isEditing) BOOL editing; 

- (void)setEditing:(BOOL)editing animated:(BOOL)animated;

 

五、UITableView方法补充

1.如果tableView通过@"Cell"这个标志去缓存池中没有取到可循环利用的Cell,就会加载MyCell1.xib文件来创建cell

[self.tableView registerNib:[UINib nibWithNibName:@"MyCell1" bundle:nil] forCellReuseIdentifier:@"Cell"];

 

2.如果tableView通过@"cell2"这个标志去缓存池中没有取到可循环利用的Cell,就会创建MyCell2对象作为cell

[self.tableView registerClass:[MyCell2 class] forCellReuseIdentifier:@"cell2"];

// 注意:

不管是局部刷新,还是整体刷新,原理都是:

UITableView重新向数据源(dataSource)和代理(delegate)发送相应的消息,最终将得到的数据展示出来