2010-08-16 3 views
7

tôi đang tạo ra một cái nhìn như thế này:xóa chế độ xem phụ UIView dựa trên thẻ?

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]; 

Điều này có thể xảy ra nhiều lần trong bộ điều khiển quan điểm này vì vậy trước khi tôi có thể tạo một cái nhìn mới như thế này tôi muốn loại bỏ bất kỳ mà có thể tồn tại với thẻ này, tôi đang cố gắng này:

UIView *removeView = [self.view viewWithTag:999]; 
[removeView removeFromSuperview]; 

Điều này không hoạt động vì một lý do nào đó, bất kỳ ai nhìn thấy sự cố của tôi ở đây?

Tôi đoán tôi có thể lặp qua tất cả các chế độ xem và kiểm tra thẻ nhưng muốn có giải pháp trực tiếp và thanh lịch hơn.

Trả lời

25

Sự cố là bạn có thể chỉ xóa một chế độ xem của một số? Hãy thử điều này:

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

Nếu chỉ có một cái nhìn đó là việc tạo/gắn thẻ/gỡ bỏ, bạn cũng có thể xem xét chỉ cần thêm một tài sản để theo dõi quan điểm đó, và viết:

[self.subView removeFromSuperview]; 
self.subView = qty; 
+1

đẹp, hoạt động như một vô địch - cảm ơn bạn! – Slee