如何从 iOS 中的 NIB 加载 NIB

How to load a NIB from NIB in iOS

我通过 XIB 创建了 CustomViewController。

我还通过子 class os UIView 的不同 XIB 文件创建了 CustomView。

然后我将 UIView 绑定到 CustomViewController 并将其 class 设置为 CustomView。

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

为什么以及如何解决?

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

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

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

您必须将包含在此处的代码放入 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;
    }
}

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

我认为从 cocoa 和 cocoaTouch 最近的变化来看,Apple 不希望我们从 nibs 加载简单的视图。请注意顶部的 'files owner' 代理现在标记为 'ViewController'