删除基于标记的UIView子视图?

Sle*_*lee 7 iphone objective-c ipad

我正在创建这样的视图:

UILabel *qty = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
qty.backgroundColor = [UIColor whiteColor];
qty.text =[NSString stringWithFormat:@" Qty: %@", currentQty];
qty.alpha = 0.5;
[qty setTag:999];
[self.view addSubview:qty];
[qty release];
Run Code Online (Sandbox Code Playgroud)

这可能会在此视图控制器中多次发生,因此在创建这样的新视图之前,我想删除此标记可能存在的任何内容,我正在尝试这样做:

UIView *removeView  = [self.view viewWithTag:999];
[removeView removeFromSuperview];
Run Code Online (Sandbox Code Playgroud)

由于某些原因这不起作用,任何人都在这里看到我的问题?

我想我可以遍历所有视图并检查标签,但宁愿有一个更优雅和直接的解决方案.

Sea*_*ell 26

问题是您可能只删除了几个视图吗?试试这个:

UIView *removeView;
while((removeView = [self.view viewWithTag:999]) != nil) {
    [removeView removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)

如果只有一个视图被创建/标记/删除,您还可以考虑添加一个属性来跟踪该视图,并编写:

[self.subView removeFromSuperview];
self.subView = qty;
Run Code Online (Sandbox Code Playgroud)