UITableView不会滚动到最底部

时间:2012-05-20 11:37:12

标签: nsindexpath uitableview

我有一个UITableView,里面有30个单元格。当我添加一个新单元格时,我成功地使用了滚动索引方法,但是在视图加载时调用时它几乎不起作用。当在视图didload中调用它时,它会滚动到倒数第二个单元格而不是最后一个单元格,而最后一个单元格仍然隐藏在视图之外。在我调用滚动的那一点上,数组的最后一个位置肯定有一个对象,这很奇怪。

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[myMatch.chat count]-1 inSection:0];
    [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

3 个答案:

答案 0 :(得分:3)

使用 -

[tableView setContentInset:UIEdgeInsetsMake(0, 0, bottomSpace, 0)];

UIEdgeInsetsMake有四个参数 - topleftbottomright

答案 1 :(得分:0)

Michaela,我想以三种可能的方式思考:

  • NSLog调用scroll方法时调用的索引号。尝试从IBAction中触发此方法,并查看记录的值和结果是否不同。
  • 您确定UITableView框架设置正确吗?
  • 您是否尝试过不同的UITableViewScrollPosition?

答案 2 :(得分:0)

viewDidAppear:调用时功能是否正常?如果是这样,它可能与调用viewDidLoad后调整大小的视图有关。

请参阅:Why am I having to manually set my view's frame in viewDidLoad?

您是否可以在iPhone 5的界面构建器中设置视图并在iPhone 4上查看这些结果?我的猜测是边界(显示的tableview的实际部分)在viewDidLoad中设置,然后通过Springs和Struts或Autolayout从原始大小修改框架。我相信,界限总是从底部被推高,所以这可能会掩盖你最后一个细胞。

您可以NSLog(NSStringFromCGRect(self.view.frame));viewDidAppear中的viewDidLoad对此进行测试。如果它们不同,框架会调整大小,并在滚动到底部之后覆盖最后一个项目