如何在 iOS 4 中从 UIViews 加载 nib?
Posted
技术标签:
【中文标题】如何在 iOS 4 中从 UIViews 加载 nib?【英文标题】:How can I load nib from UIViews in iOS 4? 【发布时间】:2011-06-22 17:12:27 【问题描述】:如何在 ios 4 中从 UIView 加载 nib?
我没有 UIViewController,因为我将此自定义视图添加到父视图。
我想从一个 nib 文件初始化这个自定义视图。我应该使用哪个初始化程序? initWithFrame 还是 initWithCoder ?
到目前为止,我只在界面生成器中分配了自定义类。 (见图:http://cl.ly/7pmj)。这是必要的吗?如果是这样,还是不行,为什么还不够呢?
NB 我在 *** 中找到了 this related question。但是,它没有解释如何使用 nib 初始化视图本身。
我需要为这个视图自定义 drawRect 方法,所以我不能只从 nib 文件中添加子视图。我需要从 nib 文件初始化视图本身。
谢谢
【问题讨论】:
【参考方案1】:是的,必须更改 nib 文件中的自定义视图类。 确保两件事: 1. 转到您的CustomView.nib 文件,选择对象中的视图,然后在身份检查器下确保自定义类正确。 2.在youCustomView.m文件中,确保你有这部分:
- (id)initWithCoder:(NSCoder*)coder
if ((self = [super initWithCoder:coder]))
//add custom change after init from nib.
return self;
【讨论】:
【参考方案2】:使用相关问题中的方法 (NSBundle loadNibNamed) 并确保该调用中的所有者是一个对象,该对象具有相关视图的 IBOutlet。
将该 iboutlet 连接到界面构建器中的视图(您需要将 IB 中的所有者类设置为加载 nib 调用中的所有者类)。
nib 会将视图加载到该 iboutlet 变量中。
在 .h 文件中:
IBOutlet UIView *myView;
在 .m 文件中:
[[NSBundle mainBundle] loadNibNamed:@"viewToLoad" owner:self options:nil];
[someOtherView addSubView:myView];
其余的在 IB 中。
【讨论】:
以上是关于如何在 iOS 4 中从 UIViews 加载 nib?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中从 Images.xcasset 加载图像集(捆绑包)