UITableView无法滚动到底部(Swift IOS)

4

我的UITableView无法滚动到底部,停在了所有内容显示之前(剪去了最后几行)。我已经检查过我的UITableView是否等于屏幕大小,但是内容大小比屏幕和表格高度要大。我不确定为什么会出现这种情况。

5个回答

4

1) 您的屏幕底部是否有UITabBar?如果是这样,可以前往您的故事板以及您放置了UITableViewUIViewController,并取消选中它的Under Bottom Bars布尔值。

enter image description here

2) 您可能已经设置了一个负数的NSLayoutConstraint在底部。这意味着您的UITableView将会延伸到屏幕底部。如果是这样,请重新设置您的UITableView的底部约束为0.0。

enter image description here

3) 您可以尝试使用UITableView滚动方法。获取最后一个单元格的索引:

[yourTableView scrollToRowAtIndexPath:lastCellIndex 
                 atScrollPosition:UITableViewScrollPositionTop 
                         animated:YES];

4) UITableView 是由 UIScrollView 派生而来的子类。因此,您可以将其视为这样处理。

如果 UITableView 中的每个单元格具有相同的高度,则可以将数据源中的对象数量乘以单元格的高度,然后将该值输入到您的 UIScrollView/TableView 方法中作为 contentOffset:

(void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated

@BrandonA,回答得非常好。用漂亮的代码片段涵盖了所有基本要点。 - Ashley Mills
1
@AshleyMills,你太客气了。我只是一个简单的程序员。我没有像Swift的可达性那样做过任何酷炫的事情。不过,现在还没有。 - Brandon A

2

这很可能发生在小型iPhone设备上。因为您没有正确设置表格视图的底部约束条件,请检查该约束条件。如果不存在,请添加它。


2

也许你需要设置自动尺寸:

你可以使用正确的约束将tableView固定到父视图,如果你正在使用自定义的tableView cell,则将所有标签的约束(前导、后续、顶部和底部)固定到cell中,然后在你的ViewController的viewDidLoad方法中编写以下代码:

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44.0

当您的约束正确时,您的表视图单元格内容大小将根据内容动态调整大小。

注意:

如果您正在使用UITableViewAutomaticDimension,请勿使用tableview代理方法(heightForRowAtIndexPath)来调整高度。


0
在属性检查器中取消相应视图控制器的“底部栏下方”复选框可以解决我的问题。

0
在我的情况下...移除

tableview.frame.size = tableview.contentsize 是有效的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接