-1

私のアプリケーションでは、tableViewがあり、セルが選択されたときにセルの背景色を変更し、そのコードを次のように記述しました。

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.backgroundColor = [UIColor whiteColor];
}

問題は、tableViewをスクロールすると、セルの背景色が無効になり、白い色が表示されないということは、背景色の効果が削除されることを意味します。テーブルビューは、スクロールアウトされたときにセルを再利用したため、セルの背景効果が削除されました。問題が発生する場所はわかりますが、この問題を処理し、テーブルビューをスクロールしても、選択したセルの背景色を白のままにする方法がわかりません。この問題の解決策を教えてください。

4

2 に答える 2

0

選択した行の背景を変更する最良の方法はselectedBackgorundView、セルを作成するときに変更することです。そうすれば、あなたが扱う必要はありませんdidSelectRowAtIndexPath:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"myCellId";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        UIView *v = [[UIView alloc] init];
        v.backgroundColor = [UIColor whiteColor];
        cell.selectedBackgroundView = v; // Set a white selected background view. 
    }
    // Set up the cell...
    cell.textLabel.text = @"foo";
    return cell;
}
于 2012-10-30T13:51:58.680 に答える
0

セルが再利用されるため、これは機能しません。そのため、セルが再利用されるとすぐに backgroundColor が上書きされる可能性があります。

セルの backgroundView を使用する必要があります。まさにパルキットがすでに書いたとおりです。

于 2012-10-30T13:55:52.830 に答える