Objective-C UI之UITableView详解

Objective-C UI之UITableView详解,第1张

UITableView在iOS开发中占据非常重要的位置,必须熟练掌握。

学习UITableView之前,先了解一下一些基本概念:

从上面可以了解到,section和row代表一个UITableViewCell在UITableView上的位置

下面,我们创建一个UITableView:

下面是UITableView的常用属性:

rowHeight行高

separatorStyle 分隔线样式

separatorColor 分隔线颜色

tableHeaderView UITableView的置顶视图

tableFooterView UITableView置底视图

UITableView中有两个重要的属性:dataSource(遵循UITableViewDataSource协议)和delegate(遵循UITableViewDelegate协议)

其中dataSource是和显示数据相关的代理,delegate是和视图 *** 作相关的代理

UITableViewDataSource协议中有两个必须实现的协议方法

1.UITableView每个分区包含的行数:

UITableView的每一个单元格是UITableViewCell类的对象,默认提供了三个视图属性:

UITableView有一个重用池机制管理Cell,目的是使用尽可能少的Cell显示所有的数据

UITableView重用Cell的流程

在创建UITableView之后,需要注册一个Cell类,当重用池中没有Cell的时候,系统可以自动创建Cell。相关方法:

[tableView registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier](可以使用不同identifier进行多次注册)

系统提供了一个获取重用池中Cell的方法(需要一个重用标识):

1.UITableViewDataSource

2.UITableViewDelegate

流程:

注意:编辑结束后,由于numberOfRowInSection这个协议方法只在tableView添加到父视图的时候调用一次,而且table上的数据都是由数组提供,因此,需要先改变数组中的数据,然后让table的协议重新调用进行重新赋值

即先修改数据源,在刷新table(使用[table reloadData]方法刷新)

1.自定义Cell

一般而言,Cell在创建的时候的frame大小是(0,0,320,44),而我们设定的Cell的高度一般会大于44。因此:在自定义Cell中创建子视图的frame为CGRectZero。在Cell添加到tableView上的时候才给子视图设置frame,Cell添加到tableView的时候大小已经更改为tableView设定的大小,所以在自定义Cell的方法layoutSubviews中设置子视图的frame

2.Model的使用

Model类的作用主要是为我们提供数据,一般我们的数据都是存放在数组和字典中,OC中的KVC就是帮助我们将字典转换为Model类而存在的

使用步骤:

注意:Model类要重写-(void)setValue:(id)value forUndefinedKey:(NSString *)key,防止找不到和key值相同的属性时,会crash,当key值为系统关键字,可以在方法里面为对应的属性(属性名和系统关键字不冲突)赋值,比如_id = value

3.多种Cell混合使用

不同的Cell需要使用不同的重用标识符来进行区分,而重用标识符的区分需要根据不同的情况来区分,比如:

4.自适应高度

var arrayDict = [[String:<#字典存储的值的类型#>]]()

然后往里面添加字典就行了,当然也可以在初始化的时候直接赋值

如果是想自己解析 JSON 文件的话可以考虑使用 [String:Any] 作为类型

也有很多第三方框架可以使用,比如 SwiftyJSON 等,苹果也有自带的 NSJSONSerialization


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/bake/11964741.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存