这不是真正的问题,我只是想澄清一下。 我在 UIButton 上添加了一些 subview (每个按钮都有一个标签),我知道可能有 4 个或 5 个 subview 。 所以,当我想删除一些 subview 时(在这种情况下特别是第 4 和第 5 个):
int cnt=[[(UIView *)[self.scrollView viewWithTag:index] subviews] count];
if (cnt==4) {
[[[(UIView *)[self.scrollView viewWithTag:index] subviews] objectAtIndex:3] removeFromSuperview];
}
if (cnt==5) {
[[[(UIView *)[self.scrollView viewWithTag:index] subviews] objectAtIndex:3] removeFromSuperview];
//[[[(UIView *)[self.scrollView viewWithTag:index] subviews] objectAtIndex:4] removeFromSuperview]; <-- this crash
[[[(UIView *)[self.scrollView viewWithTag:index] subviews] objectAtIndex:3] removeFromSuperview];
}
被注释掉的行当然不能执行,因为没有5个,而是4个 subview 。
所以我必须删除指向同一索引两次的 View 。
我想知道删除它们是否是一种安全的方法,并且我想确保最后一个 View 在数组 [[self.scrollView viewWithTag:index] subviews]
中移动一个位置.
希望它是清楚的。 谢谢
最佳答案
如果您知道要删除的 View 的标签,那么更安全的做法是:
[[parentView viewWithTag:tag] removeFromSuperview];
在这里,您要求 subview 删除自身,而不是要求父 View 根据某些可能错误的假设顺序删除 subview 。
关于iphone - 安全地删除带有标签的 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905697/