iphone - 安全地删除带有标签的 subview

标签 iphone ios tags subviews

这不是真正的问题,我只是想澄清一下。 我在 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/

相关文章:

PHP删除所有表tr td标签

iphone - EAAccessoryManager 是否列出已连接的蓝牙耳机?

ios - 顶部导航无法正常显示 - iPhone 应用程序也必须在 iPhone 分辨率和 2X iPhone 3GS 分辨率下未经修改地在 iPad 上运行

ios - 在 parse.com 的 ios 中使用 google plus 登录

ios - 更新到 XCode 8 后 iPad 上的应用程序崩溃

ios - 无法在 iOS 中同时使用 Urban Airship 和 Facebook 云消息传递

ios - 需要在 IOS 的 mapview 上添加一个固定的叠加层

ios - 在应用商店提交 iPhone 应用,然后决定提交 iPad 应用?

java - 如何在 Emacs 中将外部标签文件添加到 CEDET 中

php - 如何在 HTML 脚本标签中添加 PHP 回显