Call function only after reloadData has finished

I have a tableView and need to perform a function once the tableView has been reloaded. How do I know if reloadData has finished? Lets say I have methodA that populates the tableView, and once [tableView1 reloadData] has been completed, I want to call methodB. Can anyone help me with this? I’ve been searching for hours… Thank you!

- (void) methodA
{

    NSString *URLa = [NSString stringWithFormat:@"http://www.website.com/page.php?
    v1=%@&v2=%@&v3=%@",v1, v2, v3];

    NSURL *url = [NSURL URLa];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    (void) [[NSURLConnection alloc] initWithRequest:request delegate:self];

    [tableView1 reloadData];

}

  • HTTP “Content-Disposition: attachment” and downloading files on iOS web browser
  • Smart App Banners; Windows Store app HTML meta tag equivalent for Android/Google Play?
  • iOS Certificates Expiry
  • Accessing UITabBarController from UIVIewController
  • Undefined symbols for architecture arm64
  • iOS app crashes on resuming
  • 3 Solutions Collect From Internet About “Call function only after reloadData has finished”

    The problem is that you call reloadData immediately after starting the URL request. That does not make sense because the request has not been completed at that point.

    The correct way would be to call reloadData and methodB in connectionDidFinishLoading, after you have updated your data source with the response from the URL request. At that point you know if the number of rows is zero or not, and there is no need to wait for the table view update to complete.

    You can add a method/category on UITableView or even subclass UITableView:

    -(void)reloadDataAndWait:(void(^)(void))waitBlock {
        [self reloadData];//if subclassed then super. else use [self.tableView
        if(waitBlock){
            waitBlock();
        }
    }
    

    And you need to use it as

    [self.tableView reloadDataAndWait:^{
        //call the required method here                                            
    }];
    

    Once I get updated data from server for my table.

    I use following code snip to Hide progress bar when table reload gets complete.

    [UIView animateWithDuration:0 animations:^{
                [your_table_view reloadData];
            } completion:^(BOOL finished)
            {
                //Table reload completed TODO here
                //Hide progress bar etc.
            }];