UIView addSubview只运行一次但不是两次

时间:2013-06-25 14:10:27

标签: ios objective-c

我想在我的xib文件的UIButton中添加UIView

在我的xib中,我使用界面构建器声明一个名为“content”的UIView出口:这是生成的代码:

@property (weak, nonatomic) IBOutlet UIView *content;

我想添加一个按钮,这是代码:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(0, 8, 141.0, 56.0);
[button setBackgroundImage:[UIImage imageNamed:@"TAB_NORMAL"] 
                                      forState:UIControlStateNormal];
button.frame = CGRectMake(0, 8, 56.0, 141.0);
[self.content addSubview:button];

如果我将此代码放在-viewDidLoad方法中,它可以正常工作,但是如果我将它放在稍后调用的函数中,则永远不会显示该按钮。

可能是什么原因?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果您的UIView content是顶级项目,即未包含在主视图中,则必须为strong。只有非顶级的商品才能使用weak,因为包含的视图会对其进行强有力的引用。我还假设content被立即添加到主视图中,该视图保留了对它的强引用(它在viewDidLoad发生之前发生在ARC nil'ed content之前。

如果由于某种原因将属性更改为strong无法解决问题,那么请确保添加NSLog(或断言)以确保content为非零。