如何从NIB文件加载一个UIView?

18

我一直在使用UIViewControllerinitWithNibName,并且非常成功地将它们用作使用Interface Builder设计视图的便捷方式。不幸的是,在注意到UIViewController文档中的以下内容之前,我已经构建了视图层次结构:

注意:您不应该使用视图控制器来管理仅填充其窗口一部分的视图

我的问题是:如何以最简单的方式将一个只有一个UIView和默认的First Responder和Owning Object的简单NIB加载到我的代码中?

目前我无法使loadNibNamed:owner:options:起作用,但怀疑答案某种程度上涉及它。

1个回答

29

可以,只需调用即可

[[NSBundle mainBundle] loadNibNamed:@"viewNib" owner:self options:nil];
你通常可以从你在NIB中设置为File's Owner的视图控制器中执行此操作。这样,你可以在视图控制器中声明一个视图输出口(outlet),当你加载NIB文件时,它将自动连接上。在这种情况下,你甚至不需要使用该方法的返回值。

你通常可以从你在NIB中设置为File's Owner的视图控制器中执行此操作。这样,你可以在视图控制器中声明一个视图输出口(outlet),当你加载NIB文件时,它将自动连接上。在这种情况下,你甚至不需要使用该方法的返回值。


1
你好,我有一个问题:这种方法是否处理了具有CustomView类的情况?如果File's Owner是视图控制器,从中初始化视图,则如何将nib中的所有元素(例如MyLabel)实际连接到CustomView类的IBOutlets? - aneuryzm
只需在IB中将视图类更改为您的自定义类,然后连接插座。与您通常所做的没有区别。 - Ole Begemann
但是,如果这个UIView已经在nib上构建好了,我想重复使用它,我该怎么办? - Vladimir Stazhilov
一个好处是 NIB 可以在多个屏幕/视图控制器上进行潜在的重用。当然,现在 iOS 正式支持自定义容器视图控制器,我建议在大多数情况下为子视图编写自己的容器视图控制器。 - Ole Begemann
请注意,如果您只需要视图,则owner可以为nil。在这种情况下,请将插座连接到视图的属性/方法而不是所有者的属性/方法。 - Khanh Nguyen
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接