子类化包含多个UIViews的UIView

时间:2012-11-10 22:50:32

标签: ios uiview subclassing addsubview

我想创建一个UIView子类,它将在其初始化程序中添加一个UIView到它自己的视图,如:

    [self addSubview: someKindOfUIView];

这就是我在实现文件中实现它的方式:

- (id)init
{
     self = [super initWithFrame:CGRectMake(0, 0, 110, 110)];
     if (self) {

        self.grayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; 
        self.grayView.backgroundColor = [UIColor grayColor];

        [self addSubview:self.grayView];
        [self setBackgroundColor:[UIColor blueColor]];

    }

   return self;
}

但是当我尝试使用这个类的实例时,实例只显示一个蓝色框,而不是一个包含灰色框的蓝色框。我怎么能解决这个问题,有可能吗? :)

1 个答案:

答案 0 :(得分:1)

好的,经过一些测试和研究,我找到了答案!

在我的.h文件中,我有一个指向grayView属性的弱指针:

@property(非原子,)UIView * grayView;

相反,它应该是:

@property(非原子,)UIView * grayView;

我理解为什么,但我无法以一种好的方式解释它,所以如果有人能解释为什么(以简单的方式),灰色视图必须有一个强指针而不是弱指针,请在此答案下发表评论;)