使用loadNibNamed时未初始化子类UITableViewCell

时间:2011-04-07 02:34:48

标签: cocoa-touch ios uitableview initialization subclass

我有一个继承UITableViewCell的类。我需要在创建单元格时初始化单元格中的一些值,并且我使用以下方法创建它:

NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];

通过XCode“添加新文件”界面创建子类时,我得到以下方法:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) 
    {
        self.selectionStyle = UITableViewCellSelectionStyleBlue;

        [txtField setEnabled:YES];
        [txtField setTextColor:[UIColor redColor]];
        [txtField setPlaceholder:@"Fake Placeholder - Test Initialize"];

        [contactBtn setEnabled:YES];
    }
    return self;
}

此方法中的代码永远不会被执行。我怎么能做到这一点?如果这不是实例化对象时使用的方法(使用NSBundle loadNibNamed),那么是什么?如何以这种方式从笔尖创建单元格时初始化单元格?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:7)

从nib加载时,通过调用initWithCoder:而不是一种常规初始化方法来初始化视图。您可以覆盖此方法以进行初始化,也可以实现awakeFromNib

答案 1 :(得分:0)

加载nib不会创建任何对象,因为它们已经创建,然后在nib文件中序列化。

尝试使用awakeFromNib方法,该方法将被发送到nib文件中的所有对象。