首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cell Identifier有什么用处?

问Cell Identifier有什么用处?
EN

Stack Overflow用户
提问于 2010-01-26 05:25:40
回答 3查看 6.2K关注 0票数 3

我想知道为什么我需要在UITableView中使用单元标识符...如下所示:

代码语言:javascript
复制
static NSString *cellIdentifier = @"Cell";

这有什么用呢?例如?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-26 05:30:22

它被用作缓存单元格的键,例如:

代码语言:javascript
复制
- (UITableViewCell *)tableView:(UITableView *)tableView_ cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString * CellIdentifier    = @"MyCell1";
    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
   ...

那么不同的表可能会使用不同的标识符...

票数 3
EN

Stack Overflow用户

发布于 2012-05-09 20:19:09

UITableView需要能够流畅、快速地显示快速变化的数据,有时单元格需要额外的代码来构建单元本身,使用Core Graphics等。

UITableView一次只能显示少量的单元格,而数据源中可能包含更多的“行”。为了减少处理和内存使用,苹果公司提供了dequeueReusableCellWithIdentifier方法。这允许表视图重用已从视图中删除的已实例化的单元格。

UITableView可以包含不同类型的单元格。例如,您可能有一个表视图,其中一些行有关联的图像,而其他行没有,具有不同的单元格布局。或者您有不同的单元类型,这取决于其他一些上游应用程序设置。CellIdentifier告诉出队方法您希望重用哪种类型的信元,因此您不会收到错误类型的信元。

代码语言:javascript
复制
static NSString *CellIdentifier = @"Cell with image";
UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:CellIdentifier];

如果找不到可重用的单元,则必须创建它,即:

代码语言:javascript
复制
if(cell == nil) ....

由于许多应用程序对于给定的表视图只使用一种类型的单元格,因此CellIdentifier不会改变,这就产生了混淆。

来自苹果公司的一篇很好的文章:https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html

另请参阅:Use two different cell identifier on same table view

和:http://www.digitalhobbit.com/2009/12/19/a-useful-uitableview-cell-creation-pattern/

票数 8
EN

Stack Overflow用户

发布于 2010-01-26 05:32:11

如果需要重用单元以节省应用程序内存,单元标识符是很好的选择。例如,如果您的应用程序中有许多单元格,则不是在用户滚动过去时释放单元格,而是简单地修改单元格以包含您正在创建的新单元格的信息。这节省了空间,因为如果用户一次只查看10个单元,则不需要分配数千个单元。标识符是系统用来检查是否已经存在具有该标识符的单元格。如果有,它就会使用它们。否则,它必须分配新的空间并创建新的对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2135766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档