【问题标题】:Connect a new xib to a class that inherits from UIView将新的 xib 连接到从 UIView 继承的类
【发布时间】:2013-03-13 18:23:03
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: ios objective-c uiview


    【解决方案1】:

    在 Interface Builder 中,将自定义类设置为您的 CustomView。建立与此自定义类的连接。在要使用此 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,以便在不同的视图控制器中做不同的事情。

    【讨论】:

      【解决方案2】:

      在视图中.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,不连接到文件所有者!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-17
        • 2017-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-11
        相关资源
        最近更新 更多