我的UITableView是如何实例化自己的单元格的?

我的UITableView是如何实例化自己的单元格的?,uitableview,Uitableview,dequeueReusableCellWithIdentifier:正在实例化nib 我这样问是因为它一次实例化的单元格似乎比屏幕上显示的要多。(虽然少于表中的总行数) 我正在使用一个函数将我的表视图绑定到核心数据中的一些Artister对象。不过我认为这并不重要,它只是作为普通表视图的数据源 下面是CellForRowatineXpath的实现(我添加了日志语句) 下面是我对awakeFromNib的实现 - (void)awakeFromNib { NSLog(@"waking")

dequeueReusableCellWithIdentifier:
正在实例化nib

我这样问是因为它一次实例化的单元格似乎比屏幕上显示的要多。(虽然少于表中的总行数)

我正在使用一个函数将我的表视图绑定到核心数据中的一些Artister对象。不过我认为这并不重要,它只是作为普通表视图的数据源

下面是CellForRowatineXpath的实现(我添加了日志语句)

下面是我对awakeFromNib的实现

- (void)awakeFromNib
{
    NSLog(@"waking");
}
控制台输出如下所示:

ArtistTableViewCell
waking
<ArtistTableViewCell: 0xc678ad0; baseClass = UITableViewCell; frame = (0 0; 295 50); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xc6789f0>>
ArtistTableViewCell
醒着
TL;DR my table view比您的table view更具主动性


有什么想法吗?

您是否在单元格的nib中正确设置了重用标识符? 如果没有,您每次都会得到一个新的单元格,因为重用ID不匹配

否则,是的,如果没有任何东西可以出列,这个版本的出列将实例化一个nib。
从那里,它将创建您的cell实例,从nib调用awake,yadyadayada。

我习惯于在第一次调用时将reuseableCellWithIdentifier返回nil。它如何知道要实例化哪个nib?苹果在启动iOS5时使用了通常的出列方式,如果不加载nib模式的话。您可以为重用标识符注册一个nib,在这种情况下,如果没有任何东西可以出列,则出列将为您加载nib。
ArtistTableViewCell
waking
<ArtistTableViewCell: 0xc678ad0; baseClass = UITableViewCell; frame = (0 0; 295 50); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xc6789f0>>