使用 UITableViewController 时,initWithStyle: 方法会根据文档自动创建具有“正确尺寸”的底层 UITableView。
我的问题是这些“正确的尺寸”看起来是 320x460(iPhone 的屏幕尺寸),但我将这个 TableView/Controller 对推入一个 UINavigationController 中,它本身包含在一个 UIView 中,它本身大约是屏幕高度的一半。
我能想出的任何框架或边界争论似乎都无法正确重置表格的大小,因此它“太长”,这意味着有一组行被推离屏幕底部并且不可见或无法通过滚动。
所以我的问题归结为:告诉 UITableViewController 将其组件 UITableView 调整为指定矩形的正确方法是什么?
谢谢!
更新我尝试了这里建议的所有技术都无济于事,但我确实发现了一件有趣的事情:如果我完全避开 UINavigationController(我还不愿意为生产做这件事,但作为一个实验),并添加表视图作为我提到的封闭视图的直接子视图,给定的框架大小是受尊重的。在我将 UINavigationController 重新引入组合的那一刻,无论它是在表视图之前还是之后添加为子视图,无论是在表视图作为子视图添加之前还是之后分配/初始化它,结果和以前一样。
我开始怀疑 UINavigationController 不是一个团队合作者......
更新 2在屏幕上的表格视图之后检查帧大小的建议是一个很好的建议:结果导航控制器实际上在加载和显示之间的某个时间调整它的大小。我的解决方案,充其量是 hacky,一直缓存加载时给出的帧,如果在 tableView:cellForRowAtIndexPath: 的开头发生更改,则将其重置。你为什么在那儿问?因为这是我发现的一个有效的地方,这就是为什么!
我不认为这是一个解决方案,因为它显然不合适,但为了其他任何阅读者的利益,它似乎确实有效。