My UITableView needs to scroll all the way to the top after popping back to ViewController under certain circumstances. 
The code below works fine (I edited it for simplicity), but I am hoping to find a better way without using a delay timer. If I don't use a timer the UITableView doesn't scroll all the way to the top because the ViewController hasn't loaded yet (I think).
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];
        });
}
I tried using ViewDidAppear in ViewController and it works, but it gets called all the time if I pop the ViewController. I only need to scroll the UITableView all the way up under certain circumstances.
Edit: I also tried dispatch_async, but it doesn't work all the time.
 
     
    