0

我正在尝试删除单击按钮时初始化的 UIView。我已经单击了该按钮两次,因此出现了两个相同的 UIView。我可以删除第一个没问题,但是当我尝试用相同视图的第二个做同样的事情时,什么也没发生?我认为这是因为它是重复的,它没有注册它的存在,因为它认为它已被删除......这是我的代码:

- (void)createStamp13 {
    //--EDIT--//
    stampV13Array = [[NSMutableArray alloc] initWithCapacity:3];
    [stampV13Array addObject:stampV13];

    stampV13 = [[UIView alloc] initWithFrame:CGRectMake(200, 300, 172, 330)];
    //[firstPage addSubview:stampV13];
    [firstPage addSubview:(UIView*)[stampV13Array objectAtIndex:0];
    //--//
    stampV13.backgroundColor = [UIColor clearColor];
    stampThirteen = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"exclaim_r.png"]];
    stampThirteen.frame = CGRectMake(0, 0, 172, 330);
    [stampV13 addSubview:stampThirteen];
}

那是我创建它时的按钮功能。这是删除功能:

- (void)removeImage5:(id)sender{
    NSLog(@"Delete StampV13");
    if (stampV13) {
    [self.stampV13 removeFromSuperview];
    }
}

我希望我的解释是有道理的,我会很感激任何帮助!谢谢。

4

1 回答 1

0

stampV13是单个变量,一次只能指向一个对象。如果您调用createStamp13两次,该变量将丢失它指向的第一个对象。要拥有这些视图的多个副本,请将它们的引用保存在一个数组而不是一个变量中,并对所有数组元素执行任何您需要的操作。

一些额外的细节:

  • 将属性添加到您的 .h 文件中,例如@property (strong, nonatomic) NSMutableArray *stampV13Array;并合成它。
  • stampV13Array在包含createStamp13代码的类的“init ...”方法中进行初始化。(具体的方法取决于您如何创建该类的对象。)
  • createStamp13将方法的第一行更改为UIView *stampV13 = [[UIView alloc] initWithFrame:CGRectMake(200, 300, 172, 330)];.
  • 在方法的末尾添加一行将视图放入数组中:[self.stampV13Array addObject:stampV13];.

之后,您需要在过去使用的任何地方引用数组的成员stampV13

于 2012-05-09T12:09:23.093 回答