如何在iOS中从NIB加载NIB

时间:2015-04-28 23:18:02

标签: ios objective-c uiview nib

我有通过XIB创建的CustomViewController。

我还通过不同的XIB文件创建了CustomView,该文件是os UIView的子类。

然后我将UIView用于CustomViewController并将其类设置为CustomView。

问题在于:然后我运行这个应用程序我没有看到我在CustomView XIB中创建的CustomView内容。

为什么以及如何解决?

我需要在CustomViewController中使用CustomView,因为我需要设置此视图的布局。

我可以从ViewDidLoad加载此CustomView,但我需要从XIB加载它

UIView *v = [[[NSBundle mainBundle] loadNibNamed:@"TopSegmentedControl" owner:self options:nil] firstObject ];
[self.view addSubview:v];

2 个答案:

答案 0 :(得分:2)

我认为你应该考虑更改你的UIView子类,使它继承自UIViewController,并作为子ViewController添加到层次结构中。如果你这样做,那么你可以将interfaceView对象从接口构建器中的检查器托盘添加到外部viewControllers视图中,并且它将在那里添加新的(nib在nib中),以便将所有内容粘贴到..

我认为从最近cocoa和cocoaTouch的变化来看,Apple不希望我们从笔尖加载简单的视图。请注意,“文件所有者”代理顶部现在标记为“ViewController”

答案 1 :(得分:1)

您必须将您包含的代码放入UIViewController的initWithCoder:方法中。这是从故事板初始化时调用的初始化方法。假设您已连接一个名为myView

的插座
- (id)initWithCoder:(NSCoder *)aDecoder {
    if ((self = [super initWithCoder:aDecoder])) {
        self.myView = [[[NSBundle mainBundle] loadNibNamed:@"TopSegmentedControl" owner:self options:nil] firstObject];

        return self;
    }
}