0

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

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

在这个 XIB 中,我UIButton使用 Interface Builder 添加了四个 s。

现在我想将这四个按钮连接到我的自定义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到 main 。ViewController

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

我想我必须在 Interface Builder 上打开这个新的 xib 并将 main 设置ViewController为文件的所有者,并将我的自定义UIView类设置为这个新的 xib 上的视图的类,但我不确定。

并且,主要ViewController将这个新视图的类更改为我的 custom UIView

4

2 回答 2

1

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

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以在不同的视图控制器中执行不同的操作。

于 2013-03-13T10:01:59.343 回答
0

在 View.h 中

+(View *)loadViewFromNib;

在视图.m

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

加载 View 调用

View *view = [View loadViewFromNib];

在您的 View.xib 文件中,将Files Owner 类设置为 View,将Views 类设置为 View,仅将 Outlets 连接到 View,而不连接到 FilesOwner!

于 2013-03-13T09:19:42.807 回答