0

を使用して選択したセルの色を変更するアプリケーションがあります cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"cell_gray_with_line.png"]];。しかし、didselect で選択した後にこれを行っている場合、プッシュした後、背景が前のビューに戻りません。

if (indexPath != nil) {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];    
}   

テーブルビューをリロードせずに、このView Controllerに戻るときは、通常と同じ背景が必要です。誰でも私を助けることができますか?

4

5 に答える 5

1

UITableViewControllers は、clearsSelectionOnViewWillAppearプロパティが YES に設定されている場合、viewWillAppear で選択された行を選択解除します。その設定でテーブルビューコントローラーを使用していない場合(デフォルトはYESだと思います)、自分でやってください:

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}

did (または will) deselect デリゲート メソッドを実装し、色を修正します。

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    // do what you want to the cell
}

ちなみに、SO の他の人は、セルのコンテンツ ビュー (cell.backgroundColorではなくcell.contentView.backgroundColor) で色を設定し、 でそれを行うことを推奨していwillDisplayCell:forRowAtIndexPath:ます。

于 2013-03-05T06:52:29.103 に答える
1

に 2 つのプロパティを設定する必要がありますUITableViewCell

  1. backgroundView
  2. selectedBackgroundView

また、 に設定cell.selectionStyleする必要がありますUITableViewCellSelectionStyleNone

于 2013-03-05T06:47:25.613 に答える
0

これでうまくいくはずです、

- (void)viewDidAppear:(BOOL)animated
{
 [super viewDidAppear:animated];
 [self.tableView cellForRowAtIndexPath:[self.tableView indexPathForSelectedRow] ].backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"normal.png"]];
}
于 2013-03-05T06:50:38.263 に答える
0
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    //First you get the cell you want to change
    UITableViewCell* theCell = [tableView cellForRowAtIndexPath:indexPath];

    //Then you change the properties (label, text, color etc..) in your case, the background color
    theCell.contentView.backgroundColor=[UIColor redColor];

    //Deselect the cell so you can see the color change

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

}
于 2013-03-05T06:50:55.263 に答える