简体   繁体   English

从按钮删除UIImageView

[英]Removing UIImageView From Button

This code i use for the purpose 我用于此代码

 if(editedImage !=nil)
{
    [selectionView1 removeFromSuperview];

    UIImageView *selectionView1 = [[UIImageView alloc] initWithImage:editedImage.image];

    [_buttonScroll addSubview:selectionView1];
}

else{
[_buttonScroll addSubview:selectionView1];
}

i did in way when first time it executes then editedImage is nil so it goes in else then later on editedImage gets images like below 我在第一次执行时就这样做了,然后editedImage为nil,所以它进入了其他位置,然后稍后在editedImage上得到如下图像

    -(void)imagePickerController:(UIImagePickerController *)picker
      didFinishPickingImage : (UIImage *)image
                 editingInfo:(NSDictionary *)editingInfo
{

      NSLog(@"%@",image);
  editedImage   = [[UIImageView alloc] initWithImage: image];
    NSLog(@"%@",editedImage);
    // editedImage is UIImageView

    [picker dismissModalViewControllerAnimated:YES];
}

so it get filled and when second time my first code execute then editedImage is not null and it goes inside of if(editedImage !=nil) condition and for that now i want to delete old image which was on button and add this new image which i got from edited image 因此它充满了,当第二次执行我的第一个代码时,editedImage不为null,它进入了if(editedImage!= nil)条件内,为此,我现在想删除按钮上的旧图像并添加该新图像,我从编辑的图像中得到

so the problem is old image is not getting removed what am i doing wrong can you please suggest me something 所以问题是旧的图像没有被删除我在做什么错你能建议我一些事情吗

-(void)imagePickerController:(UIImagePickerController *)picker
      didFinishPickingImage : (UIImage *)image
                 editingInfo:(NSDictionary *)editingInfo
{

    [_buttonScroll setImage:image forState:UIControlStateNormal];

    [picker dismissModalViewControllerAnimated:YES];
}

try this simply :) 简单地尝试:)

Try: 尝试:

-(void)imagePickerController:(UIImagePickerController *)picker
      didFinishPickingImage : (UIImage *)image
                 editingInfo:(NSDictionary *)editingInfo
{

  NSLog(@"%@",image);
  if(editedImage)
     [editedImage removeFromSuperview];

  editedImage   = [[UIImageView alloc] initWithImage: image];
    NSLog(@"%@",editedImage);
    // editedImage is UIImageView

    [picker dismissModalViewControllerAnimated:YES];
}

What you need to do is keep track of the image that you are adding. 您需要做的就是跟踪要添加的图像。 You can either keep a property variable to the image that is being added, but a better option is to just set the tag of the image that gets added. 您可以为要添加的图像保留属性变量,但是更好的选择是仅设置要添加的图像的标签。 If you change your first if statement to as follows: 如果将第一个if语句更改为以下内容:

//set a tag value to use (defined at the top of your file outside the @implementation)
#define PREVIOUS_VIEW_TAG 999

if(editedImage !=nil)
{
    UIView* previousImageView = [_buttonScroll viewWithTag:PREVIOUS_VIEW_TAG];
    [previousImageView removeFromSuperview];

    UIImageView *selectionView1 = [[UIImageView alloc] initWithImage:editedImage.image];
    selectionView1.tag = PREVIOUS_VIEW_TAG;

    [_buttonScroll addSubview:selectionView1];
}

else{
    selectionView1.tag = PREVIOUS_VIEW_TAG;
    [_buttonScroll addSubview:selectionView1];
}

This should let you keep track of the view that you are adding. 这应该使您可以跟踪要添加的视图。 The value of the PREVIOUS_VIEW_TAG could be anything, I just picked 999. PREVIOUS_VIEW_TAG的值可以是任何值,我刚刚选择了999。

Also keeping in mind what @Bhargavi suggested, using [_buttonScroll setBackgroundImage:selectionView1] and then removing with [_buttonScroll setBackgroundImage:nil]; 还请记住@Bhargavi的建议,使用[_buttonScroll setBackgroundImage:selectionView1],然后使用[_buttonScroll setBackgroundImage:nil]删除; (or just override by setting the new backgroundImage) would also work. (或仅通过设置新的backgroundImage进行覆盖)也可以工作。 However, to specifically answer your question, perhaps consider keeping track of the view with a tag. 但是,要专门回答您的问题,也许考虑使用标签跟踪视图。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM