【发布时间】:2011-11-16 16:08:37
【问题描述】:
我的 iphone 应用程序中有一些(分组样式)表格(仅在屏幕的一部分上并添加了 Interface Builder,但不是从 UITableViewController 子类化),80% 的时间都很小并且适合屏幕。当表格适合屏幕时,我想禁用滚动,使其更干净一些。但是,如果表格离开屏幕(稍后添加行时),我想再次启用滚动(因为否则您看不到该内容。)
有没有办法做到这一点?我似乎无法弄清楚。我知道该怎么做:
tableView.scrollEnabled = NO;
但我不确定在哪里,或者我是否必须计算表格对象大小或其他东西才能使它工作。
更新: 这是最终对我有用的解决方案:
if (table.contentSize.height < table.frame.size.height) {
table.scrollEnabled = NO;
}
else {
table.scrollEnabled = YES;
}
我在桌子上调用reloadData 后运行此代码,它计算出正确的大小并且似乎可以工作。
table.frame.size.height 是屏幕上显示的对象的实际大小(您可以在Interface Builder 中看到),而table.contentSize.height 是高度:页眉、页脚和添加的每个单元格的高度在一起。
【问题讨论】:
-
谢谢。该解决方案对我有用。但是,我最终扩展了 UITableView 并覆盖了 reloadData 以禁用 scrollEnabled。原因是创建我的视图控制器时加载了表视图。这样您就不必调用 reloadData 两次。
-
@JoeBlow 我认为你错过了 OP 的观点。问题不在于如何禁用弹跳,而是如何仅在 tableview 需要滚动时启用滚动(和弹跳,最有可能)。
-
使用边界可能会更好,因为我认为如果你稍微旋转一下桌子,frame.height 会发生变化。
-
应该有:if (table.contentSize.height
标签: iphone ios uitableview scroll