iOS:弹出ViewController后,将UITableView滚动到顶部

时间:2018-06-05 19:23:13

标签: ios objective-c tableview popviewcontroller

我的UITableView需要在某些情况下弹回ViewController之后一直滚动到顶部。

下面的代码工作正常(为了简单起见,我编辑了它),但我希望在不使用延迟计时器的情况下找到更好的方法。如果我不使用计时器,则UITableView不会一直滚动到顶部,因为ViewController还没有加载(我认为)。

DetailController.m

- (void)popToViewController {
    // pop back to ViewController.
    [self.navigationController popViewControllerAnimated:YES];

    // Calls ViewController method
    [self.viewController method];
}

ViewController.m

- (void)method {
   dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
            [self.tableView setContentOffset:CGPointZero animated:NO];
        });
}

我尝试在ViewDidAppear中使用ViewController并且它可以正常工作,但如果我弹出ViewController,它会一直被调用。我只需要在某些情况下一直向上滚动UITableView

编辑:我也尝试了dispatch_async,但它并不是一直都在工作。

1 个答案:

答案 0 :(得分:0)

可以为动画添加完成块。删除你的计时器并尝试这样的事情:

- (void)popToViewController {
    [CATransaction begin];

    [CATransaction setCompletionBlock:^{
        [self.viewController method];
    }];

    [self.navigationController popViewControllerAnimated:YES];

    [CATransaction commit];
}