2011-06-20 16 views
2

を描かれている私はのUITableViewのセルを持っている - 私はネットワークからで情報を引っ張っている、と私は、次のデリゲートメソッドがあります。のUITableViewCell - テーブルの後に更新セルが

-(void)dataReturned:(NSString*)data indexPath:(NSIndexPath*)indexPath 
{ 
     MyTableViewCell *currentCell = (MyTableViewCell*)[self tableView:self.tableView cellForRowAtIndexPath:indexPath]; 

     currentCell.someInfo.text = data; 
     currentCell.smallActivityIndicator.hidden = YES; 
} 

残念ながら「someInfo」どちらをもsmallActivityIndi​​catorが更新されたように見えます。

私が間違っていることについてのご意見はありますか?

ありがとうございます!

+0

activityIndi​​catorを隠してから '-setNeedsDisplay'を呼び出そうとしましたか? '-dataReturned:indexPath:'メソッドは、メインスレッドまたはバックグラウンドスレッドで実行されていますか? –

+0

[currentCell setNeedsDisplay]/[self.tableView setNeedsDisplay]を呼び出そうとしましたが、いずれも正常に動作せず、メソッドはメインスレッドで実行されています。 – DAve

+0

実際には(おそらく 'NSLog()'を使って)デバッガでMyTableViewCellのインスタンスへの参照が表示されていますか? –

答えて

8

セルオブジェクトを取得して更新する代わりに、モデルを新しいデータで更新し、reloadRowsAtIndexPaths:withRowAnimation:reference)を呼び出すことができます。行をリロードすると、テーブルビューはデータソースにその行の新しいセルを要求します。 cellForRowAtIndexPath:が呼び出され、モデルからセルオブジェクトが構築されます(すでに新しいデータが格納されています)。

+0

これは本当に推奨されるアプローチなので+1しました。私の提案は回避策のほうがいいですが、理想的な方法ではありません。 –

0

currentCell、someInfoまたはsmallActivityIndi​​catorはnilに等しいですか?

「データ」を他の場所にキャッシュしているのですか、MyTableViewCellを使用してデータを保存していますか?他の場所でその文字列を格納しているはずです。

関連する問題