我的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
,但它并不是一直都在工作。
答案 0 :(得分:0)
可以为动画添加完成块。删除你的计时器并尝试这样的事情:
- (void)popToViewController {
[CATransaction begin];
[CATransaction setCompletionBlock:^{
[self.viewController method];
}];
[self.navigationController popViewControllerAnimated:YES];
[CATransaction commit];
}