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

标签 ios objective-c uitableview

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

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

有时它可以正常工作并一直滚动到顶部,但奇怪的是它也不会一直滚动到顶部。

最佳答案

尝试其中之一,

[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;
}

希望对您有所帮助。

关于ios - 为什么当我调用 setContentOffset 滚动到顶部 tableView 时,有时它会走到一半左右?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39571101/

相关文章:

IOS - ios 中的 googlemaps polyutils 等效类

ios - iOS 中的 SQLite 多个 INSERT

ios - 无法从乐观锁定失败中恢复

iphone - Cocos 2d 和 Game Center(排行榜问题)

swift - UITableViewCell的编辑样式

iphone - 如何阻止 UITableView moveRowAt IndexPath 在重新排序时留下空白行

ios - 为什么在 Objective C 中总是说属性是非原子的?

ios - Touch ID 锁定多长时间? "Biometry is locked out."

xcode - 无法使用swift更改uitableviewcell中的字体

ios - 如何在 CoreBluetooth 中使用 CBCharacteristicPropertyBroadcast?