【发布时间】:2014-03-14 04:08:08
【问题描述】:
我的故事板中有一个UITableViewController,但出于某种奇怪的原因,我无法滚动它。请观看此视频以了解我的意思:
该表有大约 40 行,因此可以显示大量信息。它的行为有点像框架非常高,因此它能够显示所有行,并且拖动的唯一动作是拉伸和反弹。
我在-viewDidAppear: 中添加了一些代码来检查frame、bounds、contentSize 和insets:
- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
UIEdgeInsets insets = self.tableView.contentInset;
NSLog(@"top layout guide: %f", self.topLayoutGuide.length);
NSLog(@"table insets: %@", NSStringFromUIEdgeInsets(insets));
NSLog(@"frame: %@", NSStringFromCGRect(self.tableView.frame));
NSLog(@"bounds: %@", NSStringFromCGRect(self.tableView.bounds));
NSLog(@"contentSize: %@", NSStringFromCGSize(self.tableView.contentSize));
}
这是打印出来的:
top layout guide: 64.000000
table insets: {64, 0, 0, 0}
frame: {{0, 0}, {320, 568}}
bounds: {{0, -64}, {320, 568}}
contentSize: {320, 1980}
那么,contentSize 显示有很多东西要显示,frame/bounds 显示桌子只有屏幕那么高,那为什么它不能滚动呢?
我尝试从我的故事板中删除它并从头开始重新创建它,以防万一发生调整并导致问题,但在我在故事板中重建该视图控制器后它仍然发生。
编辑:
我注意到scrollbars 在第一次显示视图控制器时会闪烁,它们看起来近似正确的长度来表示一个屏幕的表数据价值。我设置了一个循环,每隔几秒钟在桌子上调用-flashScrollIndicators,当视图控制器被推入堆栈时,它甚至在初始闪烁后都不显示滚动条。
【问题讨论】:
-
确保滚动已启用?
-
是的,故事板中的tableview启用了滚动。
-
尝试以编程方式设置。那是 UITableViewController.?你有没有为它添加任何子类?
-
尝试以编程方式设置它。是的,我有一个子类,这样我就可以实现数据源方法。我正在使用 NSFetchedResultsController 来提取核心数据方法。我的项目中还有其他几个视图控制器可以很好地显示/滚动。
标签: ios uitableview storyboard