在xib文件中使用拖放时,将调用UIView的哪个init方法

时间:2014-09-28 05:18:43

标签: ios initialization uicollectionviewcell

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

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

        [self initGrayStarView];

        [self initYellowStarView];

        [self initRatingLabel];
    }
    return self;
}

但我发现每次评分视图都没有显示(图片视图和标签都没有)。然后我发现它是因为我没有将init方法称为评级视图,所以它没有,但为什么呢? 这是init方法。

  

但它永远不会调用它,它只调用layoutSubview方法。

2 个答案:

答案 0 :(得分: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;
    }

尝试"知道发生了什么"但如果您刚开始,那将帮助您完成任务。希望它有所帮助

答案 1 :(得分:0)

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

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