两个相同的UIView removefromsuperview错误

时间:2012-05-09 12:00:41

标签: ipad uiview uiviewcontroller

我正在尝试删除单击按钮时初始化的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];
    }
}

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

1 个答案:

答案 0 :(得分:0)

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

其他一些细节:

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

之后,您需要在以前使用stampV13的地方引用数组成员。