2011-01-06 19 views
0

特定のUITableViewCellのtextLabelまたはdetailTextLabelを動的に変更するにはどうすればよいですか?UITableViewCellを動的に更新する

基本的には、ユーザーがセルをタップするたびに、インターネットからファイルのセットをダウンロードしています。今度は進行状況インジケータの代わりに、現在ダウンロード中のファイルの名前を表示したいと思います。すべてのファイルがダウンロードされるまで(現在の)ファイル名を表示するようにdetailTextLabelを更新し続けたいと思います。

答えて

2

、あなたはこのような何かを行うことができますが、tableView:didSelectRowAtIndexPath:のような方法にしていると仮定すると(またはセルへのインデックスパスを取得するための別の方法を持っていること):

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

UILabel *label = nil; 
for(UIView *subview in cell.contentView.subviews) { 
    if([subview isKindOf:[UILabel class]]) { 
     label = (UILabel*)subview; 
     break; 
    } 
} 

if(label) 
    label.text = @"New text"; 

これは最初のUILabelを見つけるだろうセルに複数のラベルがある場合は機能しない可能性があります。より強固な方法は、セルを作成するときにラベルのタグを設定することです(これはInterface Builderまたはコードで行うことができます)。次に、このようなラベルを見つけることができます:

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

UILabel *label = nil; 
for(UIView *subview in cell.contentView.subviews) { 
    if([subview isKindOf:[UILabel class]] && [subview tag] == kDetailLabelTag) { 
     label = (UILabel*)subview; 
     break; 
    } 
} 

if(label) 
    label.text = @"New text"; 
+0

ありがとうございます。 – NSExplorer

0

私はreloadDataメソッドの呼び出しで成功しました。

[tableSettings reloadData]; 

tableSettingsが私のUITableViewの名前です:viewWillAppearメソッドでは私のコードの例では、私はラインを持っています。