10

我正在使用 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 中的错误吗?

谢谢

-玛莲娜

4

6 回答 6

11

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

于 2015-03-02T13:04:53.997 回答
5

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

于 2015-02-03T08:30:40.743 回答
2

尝试制作视图' installed',检查此链接

于 2015-10-19T06:36:34.173 回答
0

尝试调试视图层次结构。

  • 在调试模式下运行您的应用程序;
  • 转到视图,UITableViewController 所在的位置;
  • 在 Xcode 中点击:Debug->View Debugging->Capture View Hierarchy;
  • 检查天气标签已正确分配。
于 2014-09-27T05:32:06.827 回答
0

如果初始视图控制器是我的 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,而是通过标识符实例化它,并且不再有nill单元格tableView dequeueReusableCellWithIdentifiercell viewWithTag:返回nil。

于 2015-03-07T17:06:40.793 回答
0

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

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

于 2017-03-08T21:26:45.763 回答