Objective-C在另一个XiB中使用自定义XiB

时间:2015-12-01 14:05:43

标签: ios objective-c xcode uiview xib

我真的花了很多时间来找到解决这个问题的方法。

我有;

CustomView.h ,从UIView延伸,也是IB_DESIGNABLE    CustomView.m ,可使用覆盖方法initinitWithCoderinitWithFrame来实施此视图  与所有属性绑定到CustomView类的 CustomView.xib 而且,我有:

  
      
  • 从UITableViewCell扩展的CustomTableViewCell.h
  •   
  • CustomTableViewCell.m实现此单元格
  •   
  • CustomTableViewCell.xib绑定到具有所有属性和插座的CustomTableViewCell类。
  •   

CustomTableViewCell.xib包含CustomView ...

没有任何错误,但CustomView的区域仍为空白。

1 个答案:

答案 0 :(得分:2)

对于视图,您需要做一些解决方法。

创建一个属性并将您的视图链接到XIB;

@property (strong, nonatomic) IBOutlet UIView *xibView;

然后有这样的事情:

- (void)awakeFromNib{
    [super awakeFromNib];
    [self commonInit];
}

- (instancetype)init{
    self = [super init];
    if (self) {
        [self commonInit];
    }
    return self;
}

- (instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        [self commonInit];
    }
    return self;
}

- (void)commonInit{
    //this will work if the view has the same name as the XIB
    [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
    self.xibView.frame = self.bounds;
    [self addSubview:self.xibView];
    self.xibView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

}

基本上,您必须手动加载XIB并将其添加到自定义视图中。