以编程方式添加了重复的uiview

时间:2012-01-06 15:03:04

标签: ios uiview addsubview viewwillappear

我目前正在制作照片装饰应用。 * holderView是用户选择的贴纸。每当我尝试从照片库加载照片或拍照然后重新加载到此页面时,会以编程方式添加额外的* holderView,这是我之前在拍照前选择的贴纸,之后会出现重复的贴纸,不是我想要的。

我应该如何编写代码以免发生这种情况? 非常感谢。

- (void)viewWillAppear:(BOOL)animated {

UIView *holderView = [[UIView alloc] initWithFrame:CGRectMake(0, 50, _imagePicker.selectedImage.size.width, _imagePicker.selectedImage.size.height)];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:[holderView frame]];
[imageView setImage:_imagePicker.selectedImage];
[holderView addSubview:imageView];
...
}

1 个答案:

答案 0 :(得分:2)

您的问题似乎是您使用viewWillAppear方法而不是viewDidLoad。这将导致多个“imageViews”,因为每次隐藏时都会添加一个新的imageViews,然后显示它所呈现的viewController。你想要做的是将imageView的创建(如果真的假设只有1)移动到viewDidLoad方法并使该imageView可供整个类访问,然后在viewWillApear中只需将imageView中的图像更改为新选择的图像。