在xib文件中使用拖放操作时会调用UIView的哪个init方法

问题描述 投票:0回答:2

这里是自定义集合视图,下面的标签是(我设计的评级视图)。
enter image description here

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

        [self initGrayStarView];

        [self initYellowStarView];

        [self initRatingLabel];
    }
    return self;
}

但我发现每次评级视图都没有出现(图像视图和标签出现)。然后我发现这是因为我没有调用评级视图的init方法,所以它是nil,但是为什么呢?
这是初始化方法。

但它从不调用它,它只调用layoutSubview方法。

ios initialization uicollectionviewcell
2个回答
2
投票

考虑这种模式...

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

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

-(void)_setup {
    blah;
    blah;
    blah;
}

尝试“知道正在发生什么”,但如果你刚刚开始,这会让你成功。


1
投票

在 awakeFromNib: 方法中。在您的实现文件中覆盖它,如下所示:

- (void)awakeFromNib {
  [super awakeFromNib];
  // Initialization code
  [self setupStuff];
}
© www.soinside.com 2019 - 2024. All rights reserved.