自定义xib未在其他Xib视图控制器中加载

时间:2015-11-01 23:51:20

标签: ios objective-c interface-builder xib

我有以下文件:

  • ViewController.xib
  • ViewController.h
  • ViewController.m
  • BannerView.xib
  • BannerView.h(继承自UIView)
  • BannerView.m

我的视图控制器已连接且工作正常。我创建了BannerView并执行了本教程中描述的必要链接:http://www.maytro.com/2014/04/27/building-reusable-views-with-interface-builder-and-auto-layout.html

但是,在我的ViewController.xib中添加UIView并将其类设置为BannerView时,它只是不加载。该应用程序不会崩溃或任何事情。

我错过了任何步骤,我们将不胜感激。

编辑1 - 添加了图片和代码

BannerView.h
  @property (nonatomic, strong) IBOutlet UIView *view;

#import "BannerView.h"

@implementation BannerView

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
   // Drawing code
}
*/

- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if(self) {
        [self setup];
    }
    return self;
 }

- (void)setup {
    [[NSBundle mainBundle] loadNibNamed:@"BannerView" owner:self options:nil];
    [self addSubview:self.view];
}

@end

横幅视图XIB - 文件所有者 banner view - files owner

横幅视图 - 查看 banner view - view

1 个答案:

答案 0 :(得分:0)

UIView的子类不能拥有自己的XIB文件。请注意,当您创建UIView的子类时,包括XIB复选框未启用。如果需要在UIView重载drawRect中进行自定义绘图。如果您只想将通用UIKit子视图添加到视图中,请在UIViewController的XIB中执行此操作,UIView将以编程方式显示或以编程方式执行。