UITableView的全部属性、方法以及代理方法执行顺序

标签:
 
UITableView -------表视图--继承 UIScrollView 并遵守 NSCoding 协议
 
属性
 
frame-------------设置控件的位置和大小
 
backgroundColor--------设置控件的颜色
 
style--------获取表视图的样式
 
dataSource---------设置 UITableViewDataSource 的代理
 
delegate---------设置 UITableViewDelegate 代理
 
sectionHeaderHeight------设置组表视图的头标签高度
 
sectionFooterHeight--------设置级表视图的尾标签高度
 
backgroundView----------设置背景视图,只能写入
 
editing----------是否允许编辑,默认是 NO
 
allowsSelection----------在非编辑下,行是否可以选中,默认为 YES
 
allowsSelectionDuringEditing----------控制某一行时,是否可以编辑,默认为 NO
 
allowsMultipleSelection--------是否可以选择多行,默认为 NO
 
allowsMutableSelectionDuringEditing----------在选择多行的情况下,是否可以编辑,默认为 NO
 
sectionIndexMinimumDisplayRowCount-------------显示某个组索引列表在右边当行数达到这个值,默认是 NSInteger 的最大值
 
sectionIndexColor------------选择某个部分的某行改变这一行上文本的颜色
 
sectionIndexTrackingBackgroundColor--------设置选中某个部分的背景颜色
 
separatorStyle----------设置单元格分隔线的样式
 
separatorColor---------设置选中单元格分隔线的颜色
 
tableHeaderView---------设置组表的头标签视图
 
tableFooterView----------设置组表的尾标签视图
 
  
 
UITableView 类目属性
 
section--------获取当前在哪个组内
 
row------------获取当前单元格是第几行
 
  
 
方法:
 
  
 
初始化方法:
 
initWithFrame:-----------设置表的大小和位置
 
initWithFrame:style---------设置表的大小,位置和样式(组,单一)
 
setEditing:----------表格进入编辑状态,无动画
 
setEditing: animated:---------表格进入编辑状态,有动画
 
reloadData---------------刷新整个表视图
 
reloadSectionIndexTitles--------刷新索引栏
 
numberOfSections-----------获取当前所有的组
 
numberOfRowsInSection:---------获取某个组有多少行
 
rectForSection:----------获取某个组的位置和大小
 
rectForHeaderInSection:---------获取某个组的头标签的位置和大小
 
rectForFooterInSection:-----------获取某个组的尾标签的位置和大小
 
rectForRowAtIndex:-----------获取某一行的位置和大小
 
indexPathForRowAtPoint-------------点击某一个点,判断是在哪一行上的信息。
 
indexPathForCell:------------获取单元格的信息
 
indexPathsForRowsInRect:---------在某个区域里会返回多个单元格信息
 
cellForRowAtIndexPath:-------------通过单元格路径得到单元格
 
visibleCells-----------返回所有可见的单元格
 
indexPathsForVisibleRows--------返回所有可见行的路径
 
headerViewForSection:--------设置头标签的视图
 
footerViewForSection;----------设置尾标签的视图
 
beginUpdates--------只添加或删除才会更新行数
 
endUpdates---------添加或删除后会调用添加或删除方法时才会更新
 
insertSections:withRowAnimation:-----------插入一个或多个组,并使用动画
 
insertRowsIndexPaths:withRowAnimation:-------插入一个或多个单元格,并使用动画
 
deleteSections:withRowAnimation:--------删除一个或多个组,并使用动画
 
deleteRowIndexPaths:withRowAnimation:--------删除一个或多个单元格,并使用动画
 
reloadSections:withRowAnimation:---------更新一个或多个组,并使用动画
 
reloadRowIndexPaths:withRowAnimation:-------------更新一个或多个单元格,并使用动画
 
moveSection:toSection:-------------移动某个组到目标组位置
 
moveRowAtIndexPath:toIndexPath:-----------移动个某个单元格到目标单元格位置
 
indexPathsForSelectedRow----------返回选择的一个单元格的路径
 
indexPathsForSelectedRows---------返回选择的所有的单元格的路径
 
selectRowAtIndexPath:animation:scrollPosition---------设置选中某个区域内的单元格
 
deselectRowAtIndexPath:animation:----------取消选中的单元格
 
  
 
重用机制
 
dequeueReusableCellWithIdentifier:---------获取重用队列里的单元格
 
  
 
UITableViewDataSource 代理方法:
 
方法:
 
numberOfSectionsInTableView:------------设置表格的组数
 
tableView:numberOfRowInSection:----------设置每个组有多少行
 
tableView:cellForRowAtIndexPath:---------设置单元格显示的内容
 
tableView:titleForHeaderInSection:---------设置组表的头标签视图
 
tableView:titleForFooterInSection:-----------设置组表的尾标签视图
 
tableView:canEditRowAtIndexPath:---------设置单元格是否可以编辑
 
tableView:canMoveRowAtIndexPath:--------设置单元格是否可以移动
 
tableView:sectionIndexTitleForTableView:atIndex:-------设置指定组的表的头标签文本
 
tableView:commitEditingStyle:forRowAtIndexPath:----------编辑单元格(添加,删除)
 
tableView:moveRowAtIndexPath:toIndexPath-------单元格移动
 
  
 
UITableViewDelegate 代理方法:
 
  
 
tableView:  willDisplayCell: forRowAtIndexPath:-----------设置当前的单元格
 
tableView: heightForRowAtIndexPath:-----------设置每行的高度
 
tableView:tableView heightForHeaderInSection:-----------设置组表的头标签高度
 
tableView:tableView heightForFooterInSection:-------------设置组表的尾标签高度
 
tableView: viewForHeaderInSection:----------自定义组表的头标签视图
 
tableView: viewForFooterInSection: ----------自定义组表的尾标签视图
 
tableView: accessoryButtonTappedForRowWithIndexPath:-----------设置某个单元格上的右指向按钮的响应方法
 
tableView: willSelectRowAtIndexPath:-----------获取将要选择的单元格的路径
 
tableView: didSelectRowAtIndexPath:-----------获取选中的单元格的响应事件
 
tableView: tableView willDeselectRowAtIndexPath:------------获取将要未选中的单元格的路径
 
tableView: didDeselectRowAtIndexPath:-----------获取未选中的单元格响应事件
 
  
 
执行顺序如下:
 
第一轮:
 
1、numberOfSectionsInTableView    :假如section=2,此函数只执行一次,假如section=0,下面函数不执行,默认为1
 
2、heightForHeaderInSection  ,执行两次,此函数执行次数为section数目
 
3、heightForFooterInSection  ,函数属性同上,执行两次
 
4、numberOfRowsInSection    ,此方法执行一次
 
5、heightForHeaderInSection     ,此方法执行了两次,我其实有点困惑为什么这里还要调用这个方法
 
6、heightForFooterInSection   ,此方法执行两次,
 
7、numberOfRowsInSection,执行一次
 
8、heightForRowAtIndexPath  ,行高,先执行section=0,对应的row次数
 
第二轮:
 
1、numberOfSectionsInTableView ,一次
 
2、heightForHeaderInSection  ,section次数
 
3、heightForFooterInSection    ,section次数 
 
4、numberOfRowsInSection    ,一次
 
5、heightForHeaderInSection  ,执行section次数
 
6、heightForFooterInSection,执行section次数
 
7、numberOfRowsInSection,执行一次
 
8、heightForRowAtIndexPath,行高,先执行一次
 
9、cellForRowAtIndexPath 
 
10、willDisplayCell
 
  然后8、9、10依次执行直到所有的cell被描画完毕


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好,关于 Swift 封装 UITableView 和 UICollectionView 的问题,我可以给你一些基本的介绍。 首先,UITableView 和 UICollectionView 都是 iOS 平台中常用的视图控件,用于展示列表和网格等数据。在 Swift 中,我们可以通过继承 UITableView 和 UICollectionView 类来自定义我们自己的表格和网格视图。 下面是一个简单的示例代码,展示如何封装 UITableView: ```swift import UIKit class MyTableView: UITableView, UITableViewDataSource, UITableViewDelegate { var data: [String] = [] override init(frame: CGRect, style: UITableView.Style) { super.init(frame: frame, style: style) self.dataSource = self self.delegate = self // 注册单元格 self.register(UITableViewCell.self, forCellReuseIdentifier: "cell") } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } // UITableViewDataSource 协议方法 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.data.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) cell.textLabel?.text = self.data[indexPath.row] return cell } // UITableViewDelegate 协议方法 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("选中了第 \(indexPath.row) 行") } } ``` 在这个示例代码中,我们自定义了一个名为 `MyTableView` 的类,继承自 `UITableView`。我们在 `init` 方法中设置了数据源和代理,并注册了一个单元格类型。在 `UITableViewDataSource` 和 `UITableViewDelegate` 协议方法中,我们实现了表格的行数、单元格内容和选中事件的处理。 类似地,我们也可以使用类似的方式封装 UICollectionView。需要注意的是,UICollectionViewDelegate 和 UICollectionViewDataSource 两个协议方法UITableView 中的函数名和实现方式略有不同,需要根据实际情况来进行调整。 希望这个简单的示例代码可以对你有所帮助。如果你有其他关于 Swift 的问题,欢迎随时提出!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值