如何在XIB中正确加载和显示自定义UIView?

时间:2014-04-12 13:22:21

标签: ios objective-c uiview xib

任务很简单:

  1. 我们有一个XIB。
  2. 我们有一个自定义的UIView类实现。没有XIB。
  3. 我们可以感谢IB UIView元素到XIB并将其类设置为自定义UIView类。
  4. 我们可以创建自定义UIView类的插座,并将自定义UIView从XIB连接到它。
  5. 但似乎我们应该在加载XIB时执行其他步骤来显示我们的自定义UIView(及其元素 - 标签,图像等)。
  6. 哪个步骤?
  7. UPD:任务完成。我们应该使用initWithCoder。从Pizzaiola Gorgonzola引用:当从代码动态创建UIView时,将调用initWithFrame。从.nib文件加载的视图总是使用initWithCoder实例化,编码器负责从.nib文件中读取设置»。感谢问题Subviews not showing up in UIView class

2 个答案:

答案 0 :(得分:2)

如果这些元素不在nib / xib中,您可以在initWithCoder中处理添加/创建它们:

答案 1 :(得分:0)

您可以这样做:

//MYCustomView.h
@interface MYCustomView : UIView
@end

//MYCustomView.m
@implementation MYCustomView

- (void)setup {
    // Do custom stuffs here...
}

- (id)init {
    self = [super init];
    if (self) {
        [self setup];
    }
    return self;
}

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

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

@end