sableTableCells。于是,之后的刷新就有cell做reuse了.
(5)注2: 在iOS6之后系统加入了一种单元格注册的方法.
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier: identifier];
这个方法的作用是,当我们从重用队列中取cell的时候,如果没有,系统会帮我们创建我们给定类型的cell,如果有,则直接重用. 这种方式cell的样式为系统默认样式.
5 重用 cell 的优点:
- 自定义 cell 是继承自系统的 cell, 因此它具有系统 cell 的所有的属性和方法
- 自定义 cell 可以在自定义的类中扩展属性和方法,供外界使用.
使用方法
6 注意事项
cell 的重用的时候,由于 cell 中原来的数据还有可能存在,因此重用 cell 的时候一定要先对 cell进行复制,然后在使用.
7 自定义 cell 的方法有三种
1 在自定义 cell 类的.h 文件中声明要增加的属性和方法
2 在自定义cell 类的.m 文件中实现增加的方法.
该类的构造方法 initWithStyle:--- reuseIdentify 方法
调用父类的构造方法
判断 self是否存在
返回 self
3 在 VC 中的数据源方法中的第三个方法中将系统的 cell 换成自定义的 cell 的类即可拥有自定义 cell 扩展的属性和方法.
先创建一个 static 的重用标示符,然后通过重用标示符去重用池中寻找,假如通过重用标示符找不到 cell 则通过自定义的 cell 创建 cell, 最后返回 cell.
4 应用举例:
4.1.新建一个类MyCell继承自UITableViewCell
4.2.初始化方法中添加自己的控件
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self =[super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {//添加子控件}
return self;
}
4.3.使用
//定义重用标示
static NSString *cellIdenifer = @“MyTableViewCell";
MyCell *cell= [tableView dequeueReusableCellWithIdentifier:cellIdenifer];
if (!cell) {
cell = [[MyCell alloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:cellIdenifer
}
实现步骤:
1 创建一个类 继承自 UITableViewCell/
UICollectionViewCell/UIScrollViewCell
2 创建一个和步骤一同名的 xib
3 将一个 cell拖到xib窗口中,并在属性检查器上
(1)修改Custom Class为 创建从类名
(2)设定其重用标识符(Identifier),该重用标示符要和 VC 中定义的重用标示符一样.
4 在 xib 中根据需求进行布局
5 将 xib 中的控件拖线到cell上
6 使用的时候,调用方为:[[[NSBundle mainBundle] loadNibNamed:@“xib文件名"owner:nil options:nil] lastObject];
7 应用举例:
static NSString *cellIdenifer = @"重用标示符";(应该跟xib中cell设置的idenifier吻合)
自定义的cell类 *cell = [tableView dequeueReusableCellWithIdentifier:重用标示符];
if (!cell) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"重用标示符" owner:nil options:nil];(此为刚才新建的xib的名字)
for (id oneObject in nib) {
if ([oneObject isKindOfClass:[自定义 cell 的类 class]]) {
cell = (LPDishTableViewCell *)oneObject;
}
}
}
//定义重用标示
static NSString *cellIdenifer = @“MyTableViewCell";
MyTableViewCell *cell = [tableView cellIdenifer ];
if (!cell) {
cell = [[MyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:cellIdenifer];
UILabel *aaa = [[UILabel alloc] init]
[cell addsubview:aaa];
aaa.tag = 111;
&nbs