我正在尝试删除单击按钮时初始化的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];
}
}
我希望我解释的内容有道理,我会感激任何帮助!感谢。
答案 0 :(得分:0)
stampV13
是一个变量,一次只能指向一个对象。如果您两次调用createStamp13
,则变量已丢失其指向的第一个对象的跟踪。要拥有这些视图的多个副本,请将它们的引用保存在数组中而不是一个变量中,并对所有数组元素执行任何操作。
其他一些细节:
@property (strong, nonatomic) NSMutableArray *stampV13Array;
并合成它。stampV13Array
代码的类的'init ...'方法中初始化createStamp13
。 (哪种确切的方法取决于你如何创建该类的对象。)createStamp13
方法的第一行更改为UIView *stampV13 = [[UIView alloc] initWithFrame:CGRectMake(200, 300, 172, 330)];
。[self.stampV13Array addObject:stampV13];
。之后,您需要在以前使用stampV13
的地方引用数组成员。