我正在使用IOX8和Xcode 6.我在故事板中创建了一个带有自定义类型单元格的表格,并在其中放置了一个标签。我在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中的错误吗?
感谢
-Malena
答案 0 :(得分:11)
取消选中故事板中的“大小类”选项并清除&构建应用程序。 它现在应该工作。
答案 1 :(得分:5)
我在使用IOS8和Xcode 6.1时遇到了同样的问题。我发现,如果我启用Size Classes
,则viewWithTag
始终返回nil
。我认为这可能是Xcode 6.x的一个错误。只需禁用Size Classes
,一切正常。
答案 2 :(得分:2)
尝试制作视图' installed
',请检查link:
答案 3 :(得分:0)
尝试调试View Hierarchy。
答案 4 :(得分: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,而是通过标识符对其进行实例化,而tableView dequeueReusableCellWithIdentifier
或cell viewWithTag:
中的nill单元不再返回nil。
答案 5 :(得分:0)
我错误地制作了UITableViewCell
的两个原型,一个在故事板上我给它标记号码,一个在我的代码中我注册了它的Nib文件。这引起了混乱,我无法用标签抓住视图。
我的,例如,
let nib = UINib(nibName: "DetailTableViewCell", bundle: nil)
tableView.register(nib, forCellReuseIdentifier: "headerViewCell")
从我的代码中删除上面的代码段解决了这个问题。希望这可以帮助任何有类似问题的人。