首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在尝试创建自己的单元格时发出

在尝试创建自己的单元格时发出
EN

Stack Overflow用户
提问于 2012-01-01 23:27:03
回答 2查看 63关注 0票数 0

我正在定制我的手机,如下所示

代码语言:javascript
复制
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 static NSString *CellIdentifier = @"reusedCell";    
 DetailCell *cell = (DetailCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Customize the cell of each row from table
 if ( cell == nil ) {
     NSLog(@" MY CELL IS NIL");
     cell = [[DetailCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
else
     NSLog(@" MY CELL IS NOT NIL");
}

通过调试,我知道根本达不到第4-5行。

代码语言:javascript
复制
MY CELL IS NOT NIL

因此,我不能创建我自己的细胞。根据苹果的文件

通常情况下,数据源应该做的第一件事是将dequeueReusableCellWithIdentifier:发送到表视图,传递一个重用标识符字符串。如果表视图不返回可重用的单元对象,数据源将创建一个对象,并在initWithStyle:reuseIdentifier的最终参数中为该对象分配一个重用标识符:

因此,在我的情况下,表视图确实返回一个可重用的单元对象.从那时起..。以前有没有人经历过这个问题。请帮忙谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-01-02 00:39:48

第一次显示列表时,单元格将始终为零。然后,当单元格从末端滚动时,它们会在可重用列表中循环使用。因此,有时当您调试时,单元格为零,有时您会得到一个回收单元格。另外,如果在多个列表上使用相同的标识符(即@"reusedCell") (您不应该使用),则来自另一个列表的单元格可能会被回收到您的列表中。这就是为什么您应该保持单元格标识符的唯一性。

票数 0
EN

Stack Overflow用户

发布于 2012-01-02 04:15:47

如果希望每次用户滚动表时创建新单元格,则需要在自定义单元格类中覆盖UITableViewCell的UITableViewCell属性。

代码语言:javascript
复制
- (NSString *) reuseIdentifier
{
    return @"";
}

这将允许您创建新的单元格。但是,看看内存的使用情况。因为每次用户滚动表时都要创建新的单元格。

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

https://stackoverflow.com/questions/8696295

复制
相关文章

相似问题

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