2009-05-26 13 views
2

私はUITableViewを持っています。この情報は、カスタム情報を表示するために使用されています。私は細胞にUITableViewCellAccessoryDisclosureIndicatorを追加したいと思います。開示インジケータが消えますか?

私が正常に試したメソッドはシェブロンを追加しますが、一度テーブルビューがスクロールすると消えます。標準のdequeueReusableCellWithIdentifierメソッドを実行しています。セルへの参照をダンプすると、正しく再利用されます。他のデータはすべて表示されますが、それは消えているシェブロンだけです。私が試した

もの:

  1. cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator];
  2. [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
  3. accessoryTypeForRowWithIndexPath:

誰もが今までこれが起こりますか?

答えて

4
あなたがキャッシュされた細胞試験の外にあなたのアクセサリーの種類を設定しているので、それが起こる可能性があり

static NSString *CellIdentifier = @"UIDocumentationCell"; 
     cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) { 
      cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
     } 
     [cell setText:mytext]; 

ココアタッチはいないようです:

static NSString *CellIdentifier = @"UIDocumentationCell"; 
     cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) { 
      cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
     } 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
     [cell setText:mytext]; 

良い方法は、私見では、このようなものですセルのキャッシュされたインスタンス(サブビュー)を変更したい場合、インジケータがキャッシュされ、セルが再び表示されると再描画されます。

+1

ベストプラクティスに感謝していますが、これは私の問題ではありませんでした。私は、サブビューをループして削除するコードをいくつか持っていました。これも起こってインジケータが削除され、ラベルを再追加するだけでした。 –

+0

クール...あなたは問題を解決してうれしいです。どうも! –

関連する問題