【问题标题】:Which init method for UIView will be called when using drag and drop in xib file在 xib 文件中使用拖放时将调用 UIView 的哪个 init 方法
【发布时间】:2014-09-28 05:18:43
【问题描述】:

这里是自定义集合视图,标签下方是(我设计的评级视图)。

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

        [self initGrayStarView];

        [self initYellowStarView];

        [self initRatingLabel];
    }
    return self;
}

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

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

【问题讨论】:

标签: ios initialization uicollectionviewcell


【解决方案1】:

考虑这种模式...

-(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;
}

尝试“了解正在发生的事情”,但如果您刚刚开始,这将帮助您度过难关。希望对你有帮助

【讨论】:

  • 虽然我已经找到了解决问题的方法,但这比我想要的要多,我真的帮了很多忙。
【解决方案2】:

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

- (void)awakeFromNib {
  [super awakeFromNib];
  // Initialization code
  [self setupStuff];
}

【讨论】:

    猜你喜欢
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2022-01-19
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多