故事板上不能有 a 的UIView
外部UIViewController
。我猜这是因为故事板不知道如何识别或实例化当前的 API。这是我自己用过的东西。解决方案是只使用一个 XIBUIView
并以编程方式加载它(就像以前一样)。我发现对大多数项目使用情节提要,而将 XIB 用于跨多个视图控制器的可重用视图确实可以很好地协同工作。
这是我用来加载 XIB 作为自定义对象的一部分的一些代码,该对象被初始化。
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code
[[[NSBundle mainBundle] loadNibNamed:@"BannerView" owner:self options:nil] objectAtIndex:0];
[self addSubview:self.view];
self.frame = self.view.frame;
}
return self;
}
至于将视图拖到故事板上的黑条中。这些视图仍然是 的一部分UIViewController
,但它们不是顶级视图的“子视图”。我认为文档大纲很好地显示了层次结构。
以下视图在我的主视图层次结构之外有 2.1.1 视图、2.1.2 视图等,因为它们不是我的主视图的子视图。结果是,默认情况下它们不会显示。我确实有IBOutlets
设置,我有条件地使用标准addSubview:
和removeFromSuperview
.
![IB 文件大纲示例](https://i.stack.imgur.com/xeRHs.png)