如何禁用内容适合在屏幕上的UITableView表中的滚动

我有我的iPhone应用程序中的几个(分组样式)表(只在屏幕的一部分,并添加了界面生成器,但不是从UITableViewController子类),80%的时间是小的,将适合在屏幕上。 当桌子适合在屏幕上,我想禁用滚动,使其更清洁。 但是,如果表格离开屏幕(当行被添加到它),我想再次启用滚动(因为否则你不能看到的内容)。

有没有办法做到这一点? 我似乎无法弄清楚。 我知道要做的事情:

tableView.scrollEnabled = NO; 

但我不知道在哪里,或者如果我必须计算表格对象的大小或什么东西才能得到这个工作。


更新 :这是最终为我工作的解决scheme:

 if (table.contentSize.height < table.frame.size.height) { table.scrollEnabled = NO; } else { table.scrollEnabled = YES; } 

在调用表上的reloadData之后,我运行这个代码,它计算出正确的大小并且似乎可以工作。

table.frame.size.height是屏幕上显示的对象的实际大小(你可以在界面生成器中看到这个),而table.contentSize.height是高度:标题,页脚和高度细胞加在一起。

我想你想设置

 tableView.alwaysBounceVertical = NO; 

你可以使用这个函数来validation可见单元的数量:

 - (NSArray *)visibleCells 

这个方法将会返回一个数组,其中的单元格是可见的,所以你可以计算这个数组中的对象的数量,并与你的表中的对象的数量进行比较。如果相等..你可以禁用滚动使用:

 tableView.scrollEnabled = NO; 

作为@Ginny提到..我们可能会有部分可见的单元格的问题,所以这种解决scheme在这种情况下效果更好:

 tableView.scrollEnabled = (tableView.contentSize.height <= CGRectGetHeight(tableView.frame)); 

如果你正在使用autoLayout这个解决scheme做的工作:

 tableView.alwaysBounceVertical = NO. 

在Swift中:

 tableView.alwaysBounceVertical = false 

尝试这个

 [yourTableView setBounces:NO]; 

您可以通过在滚动视图区域中select/取消select来设置启用/禁用反弹或滚动表格视图

滚动查看编辑区域

你可以在故事板中编辑它(如果你使用的话)。 在表格视图下,有一个checkbox,显示“滚动已启用”。 取消它,你就完成了。

我相信tableview单元格的默认高度是44.0f。 你必须把你的数据源放在一个数组中? 然后检查[array count]*44.0f超出了帧边界,如果是,则设置tableview.scrollEnabled = NO ,否则将其设置为YES。 在你为那个特定的tableview指定数据源的地方做它。

// Enable scrolling based on content height self.tableView.scrollEnabled = table.contentSize.height > table.frame.size.height;