使用IB从View Controller的视图加载带有XIB的自定义UIView

Dan*_*iel 7 xib uiview nib ios initwithcoder

我有一个使用Interface Builder构建的custom UIView(MyCustomUIView).我想将这个自定义视图放在MyViewController视图中,该视图也是使用IB设计的.我在一个XIB中放置了UIView一个子视图MyViewController并将其设置为MyCustomUIView.问题是,当我运行代码时,只显示一个空白视图.(当我MyCustomUIView在代码中实例化时,它显示得很好.)

我只是initWithFrame:按以下方式覆盖该方法MyCustomUIView.m:

- (id)initWithFrame:(CGRect)frame
{
    [[NSBundle mainBundle] loadNibNamed:@"MyCustomUIView" owner:self options:nil];
    self = self.view;
    return self;
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能使视图正确加载?应该initWithCoder:怎么样?

Bri*_*ley 2

你是对的。IB 使用 initWithCoder。initWithCoder 应该看起来与其他 init 方法非常相似:

- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if (self) {
        // CUSTOM INITIALIZATION HERE
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

一旦你在 IB 中分配了你的类,你就不需要从包中实例化它,除非我误解了你的意图。