将新的xib连接到继承自UIView的类

时间:2013-03-13 09:13:41

标签: ios objective-c uiview

我正在使用最新的SDK开发iOS应用程序。

我想创建一个自定义UIView并使用XIB文件设置布局。

对于这个XIB,我使用Interface Builder添加了四个UIButton

现在,我想将这四个按钮连接到我的自定义UIView课程并管理IBActions这非常重要,我必须这样做。

要加载xib:

- (id)initWithCoder:(NSCoder *)aDecoder {
    if ((self = [super initWithCoder:aDecoder]))
    {
        [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"MyCustomView"
                                                        owner:self
                                                      options:nil] objectAtIndex:0]];
    }
    return self;
}

我还有一个故事板,我使用Interface Builder为主UIView添加了ViewController

我的问题是:如何在Interface Builder上将新的XIB文件连接到我的自定义UIView

我想我必须在Interface Builder上打开这个新的xib并将main ViewController设置为File的Owner,并将我的自定义UIView类设置为这个新XIB上的视图的类,但是我我不确定。

并且,在主ViewController上,将此新视图的类更改为我的自定义UIView

2 个答案:

答案 0 :(得分:1)

在Interface Builder中,将自定义类设置为CustomView。建立与此自定义类的连接。在您想要使用此xib的任何视图控制器中,只需使用loadNibNamed:owner:options:方法加载笔尖。

CustomView *cView = [[[NSBundle mainBundle] loadNibNamed:@"CustomView"
                                                    owner:nil
                                                  options:nil] objectAtIndex:0];
[cView.button1 addTarget:self action:@selector(actnForBtn1:) forControlEvents:UIControlEventTouchUpInside];
[cView.label1 setText:@"sometext"];
[self.view addSubview:cView];

并在视图控制器中添加方法actnForBtn1:(id)sender,以便在不同的视图控制器中执行不同的操作。

答案 1 :(得分:0)

在View.h中

+(View *)loadViewFromNib;

在View.m

+(View *)loadViewFromNib{
    return (View *)[[[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:0] objectAtIndex:0];
}

加载查看电话

View *view = [View loadViewFromNib];

在View.xib文件中,将文件所有者类设置为查看,将视图类设置为视图将Outlets仅连接到视图,不将FilesOwner!