0

状況に応じて変更できるカスタムカラーをテーブルセルに配置しています。以下のコードは、色を前後にうまく変更します。reloadData色を表示するために毎回やらなければならないという事実は好きではありません。セルの色を強制的に更新するためのより安価な方法はありますか?

ここには、削除された他のコードがあります。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // testing for old selected color
    if (checkedIndexPath)
    {
        // returning old checked cell back to blue
        UITableViewCell *uncheckCell = [tableView cellForRowAtIndexPath:checkedIndexPath];
        uncheckCell.backgroundColor = [UIColor blueColor];
    }

    // changing selected cell background color
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.backgroundColor = [UIColor greenColor];
    checkedIndexPath = indexPath;

    // reloadingtable data
    [self.tableVerseView reloadData];
}
4

3 に答える 3

3

reloadDataメソッドは必要ありません。そのためのreloadRowsAtIndexPathsメソッドがあります:

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [(MyCellClass *)[self.tableView cellForRowAtIndexPath:indexPath] setBackgroundColor:[UIColor greenColor]];
    [self.tableView reloadRowsAtIndexPaths:[self.tableView indexPathsForVisibleRows]  withRowAnimation:UITableViewRowAnimationAutomatic];
}
于 2013-03-02T15:21:39.077 に答える
2

以外にテーブルのすべてのセルをリロードする方法はないと思います[... reloadData]

あなたがやっているようにそれをする必要があります。

編集:

フォントの色を変更するには:

label.textColor=[UIColor redColor];
label.font=[UIFont fontWithName:@"Helvetica-Bold" size:12.0];
于 2013-03-02T15:15:17.197 に答える
0

あるイベントで周囲の細胞の色を変えたい場合は、そうする必要はありません。必要なのは細胞reloadDataを知ることだけです。indexPathあなたがあなたの状況でそれを得ることができるならば、これらのステップに従ってください:

  • cellForRowAthInedexPathを使用した方法でセルを取得します

    - (UITableViewCell *) retriveCellForIndexPath : (NSIndexPath *) indexPath in : (UITableView *) tableView{
        return [tableView cellForRowAtIndexPath:indexPath];
    }
    
  • cell今、あなたが望む方法で更新します

  • また、セル内のすべてのUIContentを更新し、セル参照を使用してそれらを取得することもできます。ラベルの場合は、

        [cell.textLabel setTextColor:[UIColor redColor]];
    
于 2013-03-02T17:01:11.207 に答える