0

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];

}
4

3 に答える 3

5

UITableView にメソッド/カテゴリを追加したり、UITableView をサブクラス化することもできます。

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

そして、あなたはそれを次のように使用する必要があります

[self.tableView reloadDataAndWait:^{
    //call the required method here                                            
}];
于 2013-03-05T08:23:01.297 に答える
2

reloadData問題は、URL 要求を開始した直後に呼び出すことです。その時点でリクエストが完了していないため、意味がありません。

正しい方法は、URL 要求からの応答でデータ ソースを更新した後、reloadDatamethodBinを呼び出すことです。connectionDidFinishLoadingその時点で、行数がゼロかどうかがわかるので、テーブル ビューの更新が完了するのを待つ必要はありません。

于 2013-03-05T09:57:33.117 に答える