我正在定制我的手机,如下所示
- (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行。
MY CELL IS NOT NIL因此,我不能创建我自己的细胞。根据苹果的文件
通常情况下,数据源应该做的第一件事是将dequeueReusableCellWithIdentifier:发送到表视图,传递一个重用标识符字符串。如果表视图不返回可重用的单元对象,数据源将创建一个对象,并在initWithStyle:reuseIdentifier的最终参数中为该对象分配一个重用标识符:
因此,在我的情况下,表视图确实返回一个可重用的单元对象.从那时起..。以前有没有人经历过这个问题。请帮忙谢谢。
发布于 2012-01-02 00:39:48
第一次显示列表时,单元格将始终为零。然后,当单元格从末端滚动时,它们会在可重用列表中循环使用。因此,有时当您调试时,单元格为零,有时您会得到一个回收单元格。另外,如果在多个列表上使用相同的标识符(即@"reusedCell") (您不应该使用),则来自另一个列表的单元格可能会被回收到您的列表中。这就是为什么您应该保持单元格标识符的唯一性。
发布于 2012-01-02 04:15:47
如果希望每次用户滚动表时创建新单元格,则需要在自定义单元格类中覆盖UITableViewCell的UITableViewCell属性。
- (NSString *) reuseIdentifier
{
return @"";
}这将允许您创建新的单元格。但是,看看内存的使用情况。因为每次用户滚动表时都要创建新的单元格。
https://stackoverflow.com/questions/8696295
复制相似问题