为什么当我调用setContentOffset滚动到顶部tableView时,有时它会走到一半左右?

时间:2016-09-19 10:36:48

标签: ios objective-c uitableview

尝试将tableview滚动回顶部,但是当我调用它时:

[self.tableView setContentOffset:CGPointMake(0, -self.tableView.contentInset.top) animated:YES];

有时它会一直工作并滚动到顶部,但奇怪的是它并没有一直向上。

1 个答案:

答案 0 :(得分:1)

尝试其中一种,

[self.tableView setContentOffset:CGPointMake(0, 0 - self.tableView.contentInset.top) animated:YES];

或者

UITableView是UIScrollView的子类,因此您也可以使用:

[mainTableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];

或者

[mainTableView setContentOffset:CGPointZero animated:YES];

或者

NSIndexPath* top = [NSIndexPath indexPathForRow:NSNotFound inSection:0];
    [tableView scrollToRowAtIndexPath:top atScrollPosition:UITableViewScrollPositionTop animated:YES];

编辑你的

- (void)tabBarController:(UITabBarController *)tabBarController 
 didSelectViewController:(UIViewController *)viewController

如下所示,

- (void)tabBarController:(UITabBarController *)tabBarController 
 didSelectViewController:(UIViewController *)viewController
{
    static UIViewController *previousController = nil;
    if (previousController == viewController) {
        // the same tab was tapped a second time
        if ([viewController respondsToSelector:@selector(scrollToTop)]) {
            [viewController scrollToTop];
        }
    }
    previousController = viewController;
}

希望这会对你有所帮助。