IOS之UIKit_Day08
DAY08
回顾:
1 多分区表的实现:
a.动态数据(JSON字符串 文件配置文件数据库--->Medel(类,数组))
b.静态表格:
表格的行数是固定的,如设置
编码的特点:大量的硬编码使用多个if else switch来进行分区或行的判断
2 tableViewCell
2.1 系统提供的cell几种样式
Default:只有title和image
subtitle:title detail image都会有显示
Value1:detail在右侧
Value2:image不会显示Detailed右对齐
2.2 系统为Cell提供的三个视图
.tableLable
.detaitexeLable
.imageView
3 单元格的方法重用:
方法一:从队列中取cell对象自己判断是否取到了cell没有取到则自己用代码创建cell对象
方法二:在ViewDidLoad中提早注册一个单元格的类型后从队列中取cell对象,就算没有取到系统会自动创建。
4 使用tableView展示复杂的数据类型模型
3.1 NSArray —> NSString
3.2 NSArray —> Object
3.3 NSArray —> Object —> NSArray(table)
补充:
1. 看有没有工厂方法
2. 使用init时如果有多个选择先找认识的方法名找认识的参数类型
先找认识的方法名找认识的参数 都找不到 查看API
刷新:
方法一: self.tableView reloadData 使用等于三问重新走一遍
方法二:tableview只将增加的数据对应的哪一行刷新
1. 构建一个新的IndexPath
NSIndexPath*indexPath=[nsIndexPath indexPathForRow:self.citys.count-1 insection:0];
self.tableViewinsertRowsAtIndexPaths:@[indexPath] withRowAnimation:动画效果
----------------------------------------------------------------------------------------------------------------------
1表格的编辑模式:
1.1 什么是?
可以在表格上进行cell的删除增加移动的操作
1.2 如何实现数据的编辑(删除增加)
实现步骤:
1. 启动表格的编辑模式:通过修改tableView的eniting属性即可
练习:导航控制器的右上角有一个编辑按钮当点击编辑按钮时tableview的处于编辑状态并且按钮变成完成 当点击完成后按钮又变成编辑
思路:设置navagationItem的rightBarButtonItem属性创建一个”编辑按钮“并且设置他的一个点击事件:
进入点击事件[self.tableView setEditing:!self.tableView.editinganimated:YES]当单击编辑是变为编辑再次点击结束编辑状态
if (self.tableView.editing) {
[self.navigationItem.rightBarButtonItemsetTitle:@"完成"];
}else{
[self.navigationItem.rightBarButtonItemsetTitle:@"编辑"];
}根据状态判断按钮的显示
调用系统的在viewDidLoad中有一个self.nacigationItem.rightBarButtonItem=self.editButtonItem直接启用即可
2. 回答:两问一答:
a.改行是否可以进入编辑模式
b.该行使用什么编辑模式
c.确认编辑后的响应 commit确认提高
Eg:1.-(BooL)tableView:(UITableView*)tableViewcanEditRowAtIndexPath_:(NSIndexPath*)indexPAth{
return yes;可编辑状态 可以根据角标进行判读是什么状态 判断是否可以被编辑
}
2.-(UITableViewCellEditingStyle)tableView:(UITableView*)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewCellEditingStyleDelete;
}
3.-(void)tableView:(UITableView*)tableViewcommitEditing:(UITableViewCellEditingStyle)editingStyleforRowAtIndexPath:(NSIndexPath*)indexPath{
if(editingStyle==UITableViewCellEditingStyleDelete) {
//1.根据选择的行的位置修改数据模型
[self.names removeObjectAtIndex:indexPath.row];
//2.刷新tableview
[tableView deleteRowsAtIndexPaths:@[indexPath]withRowAnimation:YES];
} }
1.3 实现数据删除或添加时一定是先改数据模型在实现刷新
1.4 数据的移动
实现步骤:
1. 进入表格编辑模式
2.回答一问一答 2个问题《必须做》
问1:当前行是否可以移动
答1:移动数据行的响应
2 UITableViewCell 单元格
2.1 单元格的ContetView内容视图
UITableViewCell 继承与uiview 其中又包含了左右两个区域其中左侧用于显示内容的区域叫做内容区域想访问该区域可以通过cell.contentview属性即可:
1. 系统为内容视图提供了默认的三个控件
.textLable
.detailLable
.imageView
2. 可以自定义视图
2.2 辅助视图accessoryView
1. 使用系统提供的辅助视图
cell.accessoyType属性进行设置
UITableViewCellAccessoryDetailDisclosureButton
Checkmark:对勾
DetailDisclosureButton圆圈i
DisclosureIndicator大括号
DetailDisclosureButton圆圈加大于号
注意:包含detail按钮时,cell可以有两种不同的单击事件响应
点击圆圈i部分:响应accessoryButtonTapped:方法
点击圆圈i以外的部分:响应didSelectRowAtIndexPath:
b)自定义辅助视图
cell.accessoryView = [UIButton]
3 自定义单元格
预备:根据要显示的而结果分析底层的数据模型 创建数据模型 cell只是模型类的一个外观
step1:编写一个类类继承UITableViewCell
step2:创建可以进行界面设置的xib文件设计界面
step3:将xib文件与自己编写的cell类关连起来
step4:将xib中中设计的各个可被修改的控件进行连线且要变成公开的属性
step5:创建表格回答第三问时不再创建UITableviewCell类型的实例而是创建我们自己编写的cell类的实例 返回即可
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。