大纲
一、多个自定义单元格
步骤:
1.自定义类型
2.Cell重用标识符
3.Cell上控件的关联
二、tableView的展开与闭合
步骤:
1.将被点击的区头bool取反
2.更新区中的行数
2.1 方法1(效率低):reloadData:更新表中所有的数据
2.2 方法2(效率高):reloadSections:刷新某个区的数据
3.根据bool值,刷新相应的区。
4.处理图片旋转
刷新表时,自定义区头方法会再次被执行,因此,可以在此方法中设置图片的旋转
图片旋转:
自定义区头方法中处理
tipImgView.transform
小提示:C语言中的bool数组
BOOL _flagArray[5];//[no,no,no,no,no];
三、删除
步骤:
1.点击按钮,让表进入编辑状态
2.设置编辑风格(如果是删除,不需要设置)
3.提交编辑
3.1 删除数据源
3.2 创建单元格索引
3.3 存到数组中
正文
一、多个自定义单元格
步骤:
1.类型
2.重用标识符
3.关联
项目:TableView_MoreCustomStyleCell0406
1.1
2.1
2.2
3.1
3.2
重点:
3.3
二、tableView的展开与闭合
项目:TableView_OpenCloseDelete0406
步骤:
1.将被点击的区头bool取反
2.更新区中的行数
2.1 方法1(效率低):reloadData:更新表中所有的数据
2.2 方法2(效率高):reloadSections:刷新某个区的数据
3.根据bool值,刷新相应的区。
4.处理图片旋转
刷新表时,自定义区头方法会再次被执行,因此,可以在此方法中设置图片的旋转
图片旋转:
在自定义区头方法中处理
tipImgView.transform
小提示:C语言中的bool数组
BOOL _flagArray[5];//[no,no,no,no,no];
源码:
#pragma mark - 区头按钮点击事件 展开/闭合
//1.将被点击的区头bool取反
_flagArray[sender.tag] = !_flagArray[sender.tag];
//2.更新区中的行数
//2.1 方法1(效率低):reloadData:更新表中所有的数据
// [_tableView reloadData];
//2.2 方法2(效率高):reloadSections:刷新某个区的数据
//将刷新区的索引放入索引集合
//3.根据bool值,刷新相应的区。
NSArray *array = [_totalArr objectAtIndex:section];
return array.count;
刷新顺序:
设置每个区的行数section4
设置每个区的行数section0
设置每个区的行数section1
设置每个区的行数section2
设置每个区的行数section3
设置单元格内容(0,2)
设置单元格内容(0,3)
设置单元格内容(0,4)
设置单元格内容(1,0)
设置单元格内容(1,1)
设置单元格内容(1,2)
设置单元格内容(1,3)
设置单元格内容(1,4)
设置单元格内容(2,0)
设置单元格内容(2,1)
自定义区头section0
自定义区头section1
自定义区头section2
处理图片旋转
//4.处理图片旋转
//刷新表时,自定义区头方法会再次被执行,因此,可以在此方法中设置图片的旋转
//4.1 旋转90度
if (_flagArray[section] == YES)
{
tipImgView.transform = CGAffineTransformMakeRotation(M_PI_2);
}
//4.2 恢复
else
{
tipImgView.transform = CGAffineTransformIdentity;
}
三、删除
步骤:
1.点击按钮,让表进入编辑状态
2.设置编辑风格(如果是删除,不需要设置)
3.提交编辑
3.1 删除数据源
3.2 创建单元格索引
3.3 存到数组中
#pragma mark - 单元格的删除
//1.点击按钮,让表进入编辑状态
- (void)deleteClick:(UIBarButtonItem *)item
{
[_tableView setEditing:!_tableView.editing animated:YES];
item.title = _tableView.editing == NO ? @"删除" : @"完成";
}
//2.设置编辑风格(如果是删除,不需要设置)
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete;
}
//3.提交编辑
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
//1.删除数据源
NSMutableArray *mArray = [_totalArr objectAtIndex:indexPath.section];
[mArray removeObjectAtIndex:indexPath.row];
//2.创建单元格索引
NSIndexPath *cellIndexPath = [NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section];
//3.存到数组中
NSArray *array = [NSArray arrayWithObjects:cellIndexPath, nil];
//IndexPaths:存放索引的数组
//删除单元格时,系统会刷新表
[tableView deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationFade];
}