A good solution would be create a delegate method that tells your ViewController when the download finished. And on the implementation of the method, you call [yourTableView reloadData].
On the class you will download data (on YourDownloadClass.h):
@protocol WebServiceConsumerDelegate
//@required
-(void) requestDidFinishSuccessfully:(NSArray*) resultArray;
@end
@interface YourDownloadClass : UIViewController
@property (strong, nonatomic) id <WebServiceConsumerDelegate> delegate;
And on YourDownloadClass.h just after you download data:
[self.delegate requestDidFinishSuccessfully:resultArray];
Now, go to your TableViewClass.h
#import "YourDownloadClass.h"
@interface TableViewClass : UITableViewController <WebServiceConsumerDelegate>
Finally, on TableViewClass.m:
-(void)viewDidLoad{
[super viewDidLoad];
YourDownloadClass* delegateClass = [YourDownloadClass alloc] init];
// Or if you are downloading on AppDelegate:
AppDelegate* delegateClass = [UIapplication sharedApplication];
delegateClass.delegate = self;
}
Finally, implement the method:
-(void)requestDidFinishSuccessfully:(NSArray*) resultArray{
//Get the objects of resultArray to use on your table view
[yourTableView reloadData];
}
I hope it helps. :)