【问题标题】:Duplicated uiview added programmatically以编程方式添加了重复的 uiview
【发布时间】:2012-01-06 15:03:04
【问题描述】:

我目前正在制作一个照片装饰应用程序。 *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];
...
}

【问题讨论】:

  • 据我了解,为什么当用户选择这个视图时你没有得到 holderview,然后将图像视图添加到这个选择的 holderview 中?
  • @huubby 抱歉,您能进一步解释一下您的意思吗?谢谢
  • 我的意思是,也许您可​​以保留“您之前在拍照之前选择的”holderView,然后当您需要显示图像视图时(如您的代码所示,通过将图像视图添加到以编程方式添加holderview),您可以将图像视图添加到您保留的先前的holderview

标签: ios uiview addsubview viewwillappear


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-07-25
    • 2013-04-08
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    相关资源
    最近更新 更多