在下面的经典模式中,cell
返回的dequeueReusableCellWithIdentifier
始终为非nil
。为什么?我们不应该首先分配一些单元格,然后我们可以重新使用一些单元格吗?
我正在使用自定义单元格,它是在故事板中创建的。 (但是,如果我使用了默认的UITableViewCell,则现象相同 - 返回的单元格仍然始终为non-nil
)。
环境:Xcode 4.3.3 iOs 5.1
AlbumListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AlbumCell"];
//cell always non nil --- why??
if(cell == nil){
cell = [[AlbumListCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"AlbumCell"];
}
答案 0 :(得分:6)
如果您正在使用故事板并将故事板文件中的UITableViewCell标识符设置为您在dequeueReusableCellWithIdentifier(在您的情况下为“AlbumCell”)中使用的标识符,则UITableView将始终为您创建单元格。我想这是故事板的一个特色。如果在故事板中找不到标识符,则需要手动创建单元格。
答案 1 :(得分:0)
我知道单元格的返回可能是零,你应该检查它。通常情况并非如此,因为您应该从您提供的标识符中获取为您创建的单元格。例如,如果你没有正确的标识符并且池是空的,我相信你会得到nil并且你可以做一个aloc init来创建一个新的单元格。另外我应该添加你在xcode中创建的原型单元格是创建单元格的原因,这就是为什么它应该以非零开始,你不必创建一个。
为了更好地回答这个问题,请访问iTunes并转到iPad和iPhone应用程序开发课程--Paul Hegarty - 斯坦福CS193p课程。去讲座(25)9。表视图进入26分钟。