4

我有一个自定义 UITableViewController 来检测它的视图边界何时发生变化,并使用它来更新每个 tableviewcell 显示的缩略图数量。但是,当我将 tableView 嵌入到另一个视图中时,边界不会改变,尽管我可以在视觉上确认它调整了大小。

我使用 KVO 来检测视图边界何时发生变化。从我的自定义 TableViewController 的 viewDidLoad 方法内部:

[self.view addObserver:self forKeyPath:@"frame" options:0 context:nil];

如果我将 tableViewController 设置为应用程序的根视图控制器并旋转 iPad,则每次旋转都会更新边界,并且一切正常。

但是,由于我的 tableview 嵌入在另一个视图控制器的 nib 中,边界永远不会更新 - 框架也不会更新。尽管如此,我可以看到 tableview 本身在旋转进入/退出横向模式时正在正确调整大小 - 所以在应用程序的某个地方,真实的框架/边界正在改变,只是没有被报告。知道如何访问真正发生的事情吗?

4

2 回答 2

11

比 KVO 更好的解决方案是viewDidLayoutSubviews在您的视图控制器中实现。一旦布局完成,这将在所有边界更改上调用。

于 2012-11-18T08:26:31.547 回答
1

事实证明,在界面构建器文件中,tableview 丢失了它作为 tableViewController 视图的引用插座。添加这个回来解决了这个问题!

于 2012-11-19T12:13:02.693 回答