注册细胞重用的调用实际上做了什么?

时间:2015-02-10 19:20:27

标签: ios uitableview

我不完全理解注册用于单元重用的类的内容。我理解我们如何在单元格上使用重用标识符,我只是不明白在viewDidLoad中调用此方法的内容。看了一堆文档。不点击,在这里n00b。有人可以给我一些关于它的功能的提示吗?

TableViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];

    // Register Class for Cell Reuse Identifier
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:CellIdentifier];
}

2 个答案:

答案 0 :(得分:8)

你有UITableView。它有一个数据源,提供它UITableViewCell。为了节省内存和处理器周期,它会卸载不再在屏幕上的UITableViewCell并将它们放入重用队列中。当它加载新单元时,数据源通常会向UITableView询问此重用队列中的单元。如果队列当前为空,UITableView将使用提供的类构造新的UITableViewCellreuseIdentifier用于区分此特定单元格类型队列与同一UITableView内的另一个单元格类型队列。

这样的事情:

UITableView:"嘿,数据源!给我这个indexPath的单元格。"

Datasource:"好的。这是一个' foo'那种细胞。你有没有使用那些你没有使用过的人?"

没有注册课程;重用先前从数据源返回的单元格

UITableView:"是的,我知道。你走了。"

没有注册课程;没有可用的单元

UITableView:"不。嘿,我没有为这种细胞注册的课程。嗯。这是nil而已。"

已注册课程;重用先前从数据源返回的单元格

UITableView:"是的,我知道。你走了。"

已注册课程;没有可用的单元

UITableView:"不。但我有一个注册该标识符的类。这是一个新实例。"

答案 1 :(得分:0)

只有在使用自定义TableViewCells类时才需要注册类如果您使用的是故事板,也可以在Interface Builder中执行此操作。