在IOS6中,我有以下代码来滚动到UITableView的顶部
[tableView setContentOffset:CGPointZero animated:YES];
在iOS7中,这不再起作用。表视图没有完全滚动到顶部(但几乎是)。
在IOS6中,我有以下代码来滚动到UITableView的顶部
[tableView setContentOffset:CGPointZero animated:YES];
在iOS7中,这不再起作用。表视图没有完全滚动到顶部(但几乎是)。
self.tableView.contentOffset = CGPointMake(0, 0 - self.tableView.contentInset.top);
在这里,您不必担心是否有节或行。 您也不需要告诉表视图定位到第一行,然后想知道为什么它没有显示您非常高的表头视图等。
(CGPoint){.y = -self.tableView.contentInset.top}
。(x 将被初始化为 0。) - Steven Fisher试试这个:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
if
жқЎд»¶жқҘжЈҖжҹҘиЎЁж јжҳҜеҗҰжңүд»»дҪ•иЎҢгҖӮ - Harikrishnanfunc scrollToTop() {
if (self.tableView.numberOfSections > 0 ) {
let top = NSIndexPath(row: Foundation.NSNotFound, section: 0)
self.tableView.scrollToRow(at: top as IndexPath, at: .top, animated: true);
}
}
在这里得到一些其他答案的帮助,我设法让它工作起来。为了避免崩溃,首先必须检查是否有某些部分。如果第一个部分没有行,则可以将NsNotFound用作行索引。希望这应该是一个通用函数,放置在UITableViewController中:
-(void) scrollToTop
{
if ([self numberOfSectionsInTableView:self.tableView] > 0)
{
NSIndexPath* top = [NSIndexPath indexPathForRow:NSNotFound inSection:0];
[self.tableView scrollToRowAtIndexPath:top atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
}
var indexPath = NSIndexPath(forRow: 0, inSection: 0)
self.sampleTableView.scrollToRowAtIndexPath(indexPath,
atScrollPosition: UITableViewScrollPosition.Top, animated: true)
self.sampleTableView.setContentOffset(CGPoint.zero, animated:false)
Swift 3
如果您有表格视图标题,CGPointZero可能无法正常工作,但这种方法始终可以滚动到顶部。
self.tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: UITableViewScrollPosition.top, animated: false)
这是idStar在更新的Swift 3语法中的答案:
self.tableView.contentOffset = CGPoint(x: 0, y: 0 - self.tableView.contentInset.top)
带有动画效果:
self.tableView.setContentOffset(CGPoint(x: 0, y: 0 - self.tableView.contentInset.top), animated: true)
float systemVersion= [[[UIDevice currentDevice] systemVersion] floatValue];
if(systemVersion >= 7.0f)
{
self.edgesForExtendedLayout=UIRectEdgeNone;
}
viewDidLoad()
方法中尝试使用以下代码。我知道这个问题已经有答案了,但我想提供另一个选项:
CGRect frame = {{0, 0},{1, 1}};
[self.tableView scrollRectToVisible:frame animated:YES];
这将始终保证UITableView滚动到顶部。 接受的答案:
NSIndexPath* top = [NSIndexPath indexPathForRow:NSNotFound inSection:0];
[self.tableView scrollToRowAtIndexPath:top atScrollPosition:UITableViewScrollPositionTop animated:YES];
因为我滚动到的是tableHeaderView而不是cell,所以这个方法对我无效。
在iOS 6和7上可以使用scrollRectToVisible
。
您仍可以使用scrollToRowAtIndexPath:
来实现此目的。