为什么我不能使用initwithnibname覆盖XIB的自定义

时间:2012-07-03 19:39:15

标签: iphone ios

如果我这样做,CheckBox怎么不加载任何图像?它只适用于我从XiB文件中设置它们。我可以从Xib做到这一点,但如果我确实需要更复杂的东西来定制,我将不知道如何。

我在那里设置了一个断点,所以我知道这些事情正在被召唤。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

        [tcCheckBox setBackgroundImage:[UIImage imageNamed:@"checkbox-unchecked.png"] forState:UIControlStateNormal];

        [tcCheckBox setBackgroundImage:[UIImage imageNamed:@"checkbox-checked.png"] forState:UIControlStateSelected];

        [tcCheckBox setBackgroundImage:[UIImage imageNamed:@"checkbox-checked.png"]
forState:UIControlStateHighlighted];

        tcCheckBox.adjustsImageWhenHighlighted=YES;

        **// Custom initialization**
     }
    return self; 
}

1 个答案:

答案 0 :(得分:0)

这是因为initWithNibName:bundle:不会立即实例化nib,而只是初始化视图控制器,所以此时所有IBOutlets仍为零。覆盖viewDidLoad以进行自定义UI初始化,当实例化nib并解析所有IB连接时,将调用此方法。