【问题标题】:Why is UItableViewCell viewWithTag returning nil?为什么 UItableViewCell viewWithTag 返回 nil?
【发布时间】:2017-03-09 05:26:45
【问题描述】:

我正在使用 IOX8 和 Xcode 6。我在情节提要中创建了一个带有 customtype 单元格的表格,并在其中放置了一个标签。我在 IB 中输入了标签的标签号,以便可以在代码中检索对标签的引用。 但是,当我尝试获取对“cellForRowAtIndexPath”中标签的引用时,使用 viewWithTag 我得到标签的 NIL:

这是 cellForRowAtIndexPath 中重要的两行代码:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PlayerCell"];


UILabel *nameLabel = (UILabel *)[cell viewWithTag:1];

“cell viewWithTag:1”行返回 NIL,我不明白为什么。

我也尝试了“cell.contentView withWithTag:1”,但也没有用。

这是 IOS 8 或 Xcode 6 中的错误吗?

谢谢

-玛莲娜

【问题讨论】:

  • 细胞呢?它是否也为单元格返回 nil ?就我而言,我的单元格为零。
  • 这个问题的答案是[这里][1] [1]:stackoverflow.com/questions/26344106/…
  • 也许您在视图可见之前加载数据...尝试在 viewDidAppear 中重新加载数据

标签: uitableview viewwithtag


【解决方案1】:

取消选中情节提要中的 Size Classes 选项,然后清理并构建应用程序。 它现在应该可以工作了。

【讨论】:

  • 如果我需要启用 Size Classes 是否有解决方法?
  • 取消选中 clean & build 并重新选中 Size classes 选项
【解决方案2】:

我在使用 IOS8 和 Xcode 6.1 时遇到了同样的问题。我发现如果我启用Size ClassesviewWithTag 总是返回nil。我认为这可能是 Xcode 6.x 的一个错误。只需禁用Size Classes,一切正常。

【讨论】:

    【解决方案3】:

    尝试将视图设为“installed”,检查此link

    【讨论】:

    • 在这个“已安装”的尺寸等级上需要做一些认真的工作!!
    【解决方案4】:

    尝试调试视图层次结构。

    • 在调试模式下运行您的应用程序;
    • 转到 UITableViewController 所在的视图;
    • 在Xcode中点击:Debug->View Debugging->Capture View Hierarchy;
    • 检查天气标签是否分配正确。

    【讨论】:

      【解决方案5】:

      如果初始视图控制器是我的 tableview,那么一切都按预期工作。当它来自另一个视图控制器时,我遇到了问题。

      就我而言,在以前的视图控制器中,我有:

      RoutePreview *rs = [[RoutePreview alloc] init];
      rs.rota = [availableRoutes objectAtIndex:indexPath.row];
      
      [self.navigationController pushViewController:rs animated:YES];
      

      我已将其替换为

      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"SBIPhone" bundle:[NSBundle mainBundle]];
      RoutePreview *xpto = [storyboard  instantiateViewControllerWithIdentifier:@"RouteSummary"];
      xpto.rota = [availableRoutes objectAtIndex:indexPath.row];
      [self.navigationController pushViewController:xpto animated:YES];
      

      问题消失了。

      基本上不是直接实例化 tableviewcontroller,而是通过标识符实例化它,tableView dequeueReusableCellWithIdentifiercell viewWithTag: 中不再有 nill 单元格返回 nil。

      【讨论】:

        【解决方案6】:

        我错误地制作了 UITableViewCell 的 2 个原型,一个在我给它的标签号的情节提要上,一个在我的代码中我注册了它的 Nib 文件。这引起了混淆,我无法使用标签获取视图。 我的例如, let nib = UINib(nibName: "DetailTableViewCell", bundle: nil) tableView.register(nib, forCellReuseIdentifier: "headerViewCell")

        从我的代码中删除上面的 sn-p 解决了这个问题。希望这可以帮助任何有类似问题的人。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-11
          • 2021-12-03
          相关资源
          最近更新 更多