UITableViewCell子视图未初始化

时间:2013-03-30 03:22:07

标签: ios uitableview storyboard subview

我有一个TableViewController,并使用storyboard设计了一个自定义的uitableview单元格。我已经正确地为我的tableview单元格中的所有子视图设置了标识符和标签(我不是第一次这样做,并且通常让事情很容易) 。

但是现在我一直在我的tableview控制器上观察一些奇怪的东西。在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法中,我得到了正确的单元格。我也可以使用标签访问我的子视图。但是当我尝试访问任何子视图的框架属性时,我得到的值为0.

子视图是否会在其他方法中稍后进行布局。这是我第一次看到这个。有人曾经经历过这个吗?

2 个答案:

答案 0 :(得分:3)

单元格的子视图框架仅在UITableViewCell' layoutSubviews'之后准备就绪。方法已被调用。如果您需要修改这些框架,那么您应该创建一个UITableViewCell的子类并实现layoutSubviews

- (void)layoutSubviews {
  [super layoutSubviews];

  // modify frames here
}

如果您只需要访问帧值而不需要进行任何更改,那么您只需在tableView:willDisplayCell:forRowAtIndexPath:方法中检查它。

答案 1 :(得分:2)

实施tableView:willDisplayCell:forRowAtIndexPath:并检查子视图的框架。他们还好吗?一切都很好。