0

Webコンテンツを非同期でロードしようとしています。connectionDidFinishLoadingメソッドが呼び出された後、ViewControllerのラベル/その他のコンテンツを更新する方法がわかりません。以下のサンプルでは、​​コンテンツが読み込まれたことを示すためにラベルを更新しようとしています。どうすればいいですか?ありがとうございました!

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSLog(@"Succeeded! Received %d bytes of data",[responseData
                                                   length]);
    NSString *txt = [[NSString alloc] initWithData:responseData encoding: 
    NSASCIIStringEncoding];

    label.text = @"DISPLAY THIS WHEN FINISHED";  
}

viewControllerをNSURLConnectionDelegateにしてから、viewDidLoadからfetchDataメソッドを実行し、connectionDidFinishLoadingでフェッチされたときにデータを取得したデータを使用するように指示されました。どこから始めればいいのか誰にも分かりますか?ありがとう!

4

1 に答える 1

1

Ramy が正しく指摘したように、メイン スレッドで UI を更新する必要があります。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
   NSLog(@"Succeeded! Received %d bytes of data",[responseData length]);
   NSString *txt = [[NSString alloc] initWithData:responseData 
                                         encoding: NSASCIIStringEncoding];

  NSString *text = @"DISPLAY THIS WHEN FINISHED";
  [label performSelectorOnMainThread:@selector(setText:) withObject:text waitUntilDone:NO]
}
于 2013-02-23T10:46:15.457 に答える