0

I have a UITableView that has something like 30 cells in it. I successfully use the scroll to index method when I add a new cell, but it is not working (almost) when called at view did load. When it is called at view didload it scrolls to the second to last cell instead of the last one, leaving the last one still hidden beyond view. There is definitely an object in the last position of the array at the point i am calling the scroll to, it is just weird.

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

3 回答 3

3

利用 -

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

UIEdgeInsetsMake接受四个参数 - top, left, bottom, right.

于 2012-05-20T11:56:10.660 回答
0

Michaela,我认为有 3 种可能的方式:

  • NSLog 调用滚动方法时调用的索引号。也尝试从 IBAction 触发此方法,看看记录的值和结果是否不同。
  • 你确定 UITableView 框架设置正确吗?
  • 你尝试过不同的 UITableViewScrollPosition 吗?
于 2012-05-20T14:01:37.773 回答
0

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

请参阅:为什么我必须在 viewDidLoad 中手动设置视图的框架?

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

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

于 2013-10-24T15:42:10.890 回答