Iphone 以编程方式修改从nib初始化的UITableViewCell?
我正在使用[[NSBundle mainBundle]loadNibNamed:…]从nib加载UITableViewCell。现在,我想在代码中使用tableviewcell之前,以编程方式完成一些初始化后的工作。我应该把这段代码放在哪里,因为我似乎不能在initWithCoder方法中这样做,因为类中的label对象仍然是nil(所以不能设置任何东西)。tableviewcell中的UILabel最初是什么时候初始化的(它们都被定义为IBOutlets)?您应该将Iphone 以编程方式修改从nib初始化的UITableViewCell?,iphone,uitableview,initialization,nib,Iphone,Uitableview,Initialization,Nib,我正在使用[[NSBundle mainBundle]loadNibNamed:…]从nib加载UITableViewCell。现在,我想在代码中使用tableviewcell之前,以编程方式完成一些初始化后的工作。我应该把这段代码放在哪里,因为我似乎不能在initWithCoder方法中这样做,因为类中的label对象仍然是nil(所以不能设置任何东西)。tableviewcell中的UILabel最初是什么时候初始化的(它们都被定义为IBOutlets)?您应该将UITableViewCel
UITableViewCell
子类化,并在其中放入awakeFromNib
方法,以便在从nib中唤醒后执行初始化
为了保持代码的灵活性,将此init代码放在一个名为myInit
的例程中,然后从awakeFromNib
和其他应该调用它的地方调用它
经过一些努力,我想出了一个稍微不同的方法来解决这种情况。I子类UITableViewCell
,并具有如下初始化例程:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[[NSBundle mainBundle] loadNibNamed:@"MyUITableViewCell" owner:self options:nil];
[self addSubview:self.contentView];
}
return self;
}
其中contentView
是包含单元格内容的IBOutlet
。这使得我的代码的其余部分可以像调用任何其他单元格一样调用此单元格。(除了对(MyUITableViewCell*)[tv-dequeueReusableCellWithIdentifier:CellIdentifier];
)的一个讨厌的演员阵容之外)