覆盖addSubview方法时程序崩溃

时间:2014-06-11 09:03:03

标签: ios objective-c uiview

我有一个客户UIView“CustomerUIView”,而CustomerUIView拥有一个名为“contentView”的UIView实例。当另一个视图作为CustomerUIView实例的子视图添加时,我希望将视图添加为“contentView”的子视图,因此我覆盖了CustomerUIView中的addSubView方法,如下所示:

- (void)addSubview:(UIView *)view
{
    [contentView addSubview:view];
}

但是当我运行该程序时,它以某种方式崩溃了。那么这是否意味着覆盖addSubview方法是不正确的?

在我的旧代码中,很多地方都使用了addSubview方法,这就是我想要覆盖该方法而不是编写另一种方法的原因。有人建议吗?

1 个答案:

答案 0 :(得分:1)

当添加子视图时,程序可能更容易接收警报,然后您可以运行所需的任何代码。见stackoverflow.com/questions/11364646/intercepting-didaddsubview

或者,您可以调用try调用该方法的超级版本,然后运行您自己的代码,例如:

- (void)addSubview:(UIView *)view { 
    [super addSubview:view]; 
    [view removeFromSuperview]; 
    [contentView addSubview:view]; 
}