2012-03-01 61 views
0

这听起来可能是一个新手的问​​题,但是我是新来的iOS开发,UITableView dequeueReusableCellWithIdentifier是唯一的还是不是?

我想明白了,当我应该使用的唯一标识符细胞时不

- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier 

其实在很多我遇到了代码片段,其中标识符不是唯一的。

但在我的练习中,为了保持UITableViewCells的顺序,我使用了唯一标识符,否则当我向上和向下滚动UITableView时,顺序是混合的。

那么请帮我理解可重复使用单元的概念,不应该每个单元都有唯一标识符吗?

由于提前,

回答

0

我相信我已经得到了我的问题的答案。感谢Aaron的问题。 我总是尝试在同一视图中初始化每个单元格一次(当然,如果它没有在该视图中编辑)。我这样做是为了提高性能并平滑表视图的滚动。 区别在于 - 现在我知道它是如何工作的。如果我理解正确,单元格标识符使得单元格保持唯一性,这种方式可以实现缓存该信息然后将其放到正确位置(由于唯一标识符)。

谢谢你们!

2

只应针对不同类型的小区使用不同的标识符。如果你的表格视图具有不同类别的单元格,这可能是你的问题,或者你已经添加了子视图到单元格不同的单元格中。

当使用标识符时,根据您的单元格考虑它可能包含任何先前呈现的单元格数据的数据,因此您需要确保代码覆盖该数据,最简单的情况是cell.textLabel.text。

+0

我对所有单元格使用相同的类型,并且单元格的子视图具有相同的类型。即所有单元格都有一个图像和三个文本标签。所有这些部分都不是空的。但滚动后我仍然有混合的单元格。 – jackal 2012-03-01 14:28:32

+2

@jackal:在'tableView:cellForRowAtIndexPath:'中,您是否每次都将正确的值分配给所有标签和图像?即使你离队,你也需要设置这些。 – Aaron 2012-03-01 15:26:44

+0

@jackal:检查Aaron在说什么。另外,它可能是你模型的一个功能。你的数据如何存储?你确定你的排序顺序是一致的吗? – sosborn 2012-03-02 00:19:06

0

始终尝试在同一视图中仅初始化每个单元格一次。我这样做是为了提高性能并平滑表视图的滚动。不同的是 - 现在我知道它是如何工作的。如果我理解正确,单元格标识符使得单元格保持唯一性,这种方式可以实现缓存该信息然后将其放在正确的位置。

相关问题