无法滚动到UITableView的底部

时间:2013-05-10 13:24:26

标签: ios objective-c uitableview uiscrollview uisegmentedcontrol

我知道论坛中有很多问题的答案,但他们没有帮助我。这是我的问题。

UITableView UISegmentedControl。在一个部分中,数据少于另一个部分。在旋转或分段切换之后,我调用reloadData以确保显示整个数据。这样可行。

现在,用户点击一个单元格并使用相同的UISegmentedControl转到另一个视图。打算使用相同的控件,我希望两个视图对数据显示相同的透视图。当用户在第一个屏幕上看到数据较少的透视图时,会出现问题,转到第二个屏幕并将透视图更改为数据。然后他回去了,无法滚动到桌子的底部。如果他旋转屏幕或改变片段,一切都很好。

我尝试通过实施viewWillAppear:并减少/计算tableView的高度来解决问题。不幸的是,它没有奏效。调用reloadData也无济于事。实际上,切换段时tableView已经重新加载了......但是,我仍然无法看到表格的最后一个单元格。

有什么想法吗?

修改

以下是我从测试中获得的高度(没有调整大小):

NSLog(@"Before switch: %f, %f", self.tableView.frame.size.height, self.tableView.contentSize.height); - >开关前:372.000000,471.000000

NSLog(@"After switch: %f, %f", self.tableView.frame.size.height, self.tableView.contentSize.height); - >切换后:372.000000,585.000000

tableView保持不变,只有contentSize增加。我尝试将一个的值设置为另一个的值,减少值等,但我真的不知道应该做什么......

EDIT2:

所有contentSizeheight值似乎没问题。但是,我意识到问题与屏幕上的自定义标题视图有某种关联。当我从表格视图中删除它时,它会滚动到最后。但是,使用标题视图时,它不会。我没有从标题视图中更改任何内容,它只是一个带有按钮的视图。

2 个答案:

答案 0 :(得分:4)

因为你的tableView的框架高度超过了可见区域。将tableView的框架高度减小到可见区域内。你会看到一切。

tableView.contentSize = CGSizeMake(widthYouWant, heightYouWant);

答案 1 :(得分:1)

经过几个小时的实验,我将contentSize.height的{​​{1}}属性提高了一个,现在一切正常。我不知道为什么会这样,但它是一个解决方案。顺便说一下,将属性减少一个导致相同的结果。在这两种情况下,表格都会正确显示。