scrollToRowAtIndexPath在iOS 8中不起作用

时间:2014-08-05 22:34:08

标签: ios objective-c uitableview ios8

我目前在iOS 8中遇到了与UITableViews相关的大问题。我的应用程序的这一部分是允许用户搜索字符串列表,每次重新加载搜索结果时,结果表都以编程方式滚动到顶部(如果我不这样做,那么& #39;我获得50+结果的情况下,向下滚动到底部,然后再次搜索,但只获得5-10个结果。当发生这种情况时,表格不会自动向上滚动到顶部,所以它会产生没有结果的错觉。)

搜索并重新加载搜索结果表后,我使用以下代码将搜索结果表格滚动回到顶部:

[self.searchDisplayController.searchResultsTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];

此代码在iOS 7中正常运行,但是当我在iOS 8中使用它时,它可能正常工作一次或两次,但在此之后,它将向下滚动表格非常远。 (如果我搜索足够多次,可能需要8-10秒的滚动才能恢复到2-3个搜索结果。)

我已经尝试了我能想到的一切,它仍然像iOS 7中那样在iOS 8中起作用。有人知道为什么会发生这种情况和/或如何解决它?

2 个答案:

答案 0 :(得分:2)

我最终发现了继承的方法setContentOffset,它就像魅力一样。这是我为iOS 8实现的代码现在似乎正常工作:

[self.searchDisplayController.searchResultsTableView setContentOffset:CGPointZero];

答案 1 :(得分:0)

在iOS中只有工作解决方案是通过setContentOffset,这里我写了一个函数来scrollToEnd的tableView:

- (void)scrollToEnd
{
        CGPoint contentOffset = CGPointZero;
        contentOffset.y = self.tableView.contentSize.height - self.tableView.frame.size.height;
        [self.tableView setContentOffset:contentOffset animated:YES];
}