【发布时间】:2018-11-15 09:07:27
【问题描述】:
在某些情况下,我的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];
});
}
我尝试在ViewController 中使用ViewDidAppear 并且它可以工作,但是如果我弹出 ViewController,它会一直被调用。我只需要在某些情况下一直向上滚动UITableView。
编辑:我也试过dispatch_async,但它并不总是有效。
【问题讨论】:
-
使用从detailVC返回到masterVC的委托方法。在那里你可以传递一个带有条件的参数,然后在 masterVC 中你可以决定是否滚动。
标签: ios objective-c tableview popviewcontroller