如何从iOS 4中的UIViews加载nib?

时间:2011-06-22 17:12:28

标签: ios ipad ios4

如何从iOS 4中的UIView加载nib?

我没有UIViewController,因为我将此自定义视图添加到父视图。

我想从nib文件初始化此自定义视图。我应该使用哪种初始化程序? initWithFrame还是initWithCoder?

到目前为止,我只在界面构建器中分配了自定义类。 (见图:http://cl.ly/7pmj)。这有必要吗?如果是这样,它仍然无法正常工作,为什么还不够?

NB 我在StackOverflow中找到了this related question。但是,它没有解释如何使用nib初始化视图本身。

我需要为此视图自定义 drawRect 方法,因此我不能只从nib文件添加子视图。我需要从nib文件初始化视图本身。

感谢

2 个答案:

答案 0 :(得分:1)

是的,必须更改nib文件中的自定义视图类。 确保两件事: 1.转到yourCustomView.nib文件,选择对象中的视图,然后确保身份检查器下的自定义类正确。 2.在youCustomView.m文件中,确保您有此部分:

- (id)initWithCoder:(NSCoder*)coder 
{
    if ((self = [super initWithCoder:coder])) 
    {
       //add custom change after init from nib. 
    }
    return self;
}

答案 1 :(得分:0)

使用相关问题(NSBundle loadNibNamed)中的方法,并确保该调用中的所有者是具有相关视图的IBOutlet的对象。

将iboutlet挂钩到界面构建器中的视图(您需要将IB中所有者的类设置为加载笔尖调用中所有者的类)。

nib会将视图加载到该iboutlet变量中。

在.h文件中:

IBOutlet UIView *myView;
在.m文件中

[[NSBundle mainBundle] loadNibNamed:@"viewToLoad" owner:self options:nil];
[someOtherView addSubView:myView];

其余的在IB。