0

UITableViewCell をサブクラス化して、スクロールのパフォーマンスを向上できるようにしました。これは、これまでのところうまくいきました。

私のサブクラスには、次のようなseSelectedというメソッドがあります

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];
    
    // Configure the view for the selected state
    if (selected) {
        self.backgroundColor = [UIColor lightGrayColor];
    }else{
        self.backgroundColor = [UIColor whiteColor];
    }
}

同じセルに触れるとセルの選択が解除され、色が白に戻るようにする方法を知りたいですか? setSelected の if ステートメントをいくつか試してみましたが、何も機能していません。

4

5 に答える 5

0

UITableViewCell メソッドを使用します: [cell setSelectedBackgroundView:myBgColorView];. アップルのドキュメント。例:

UIView *myBgColorView = [[UIView alloc] init];
myBgColorView.backgroundColor = [UIColor greenColor];
[cell setSelectedBackgroundView:myBgColorView];
于 2013-10-26T10:32:39.480 に答える
0

1 つの方法は、セルにタグを設定し、それを使用して背景色を設定することです。

typedef enum {
    CellSelected = 0,
    CellDeselected
} CellSelection;

セルの作成中に、タグを「CellDeselected」に設定します

cell.tag  = CellDeselected;

次に、セルがタップされたら、背景に設定する色を確認します。

switch (customCell.tag) {
    case CellSelected:
        self.backgroundColor = [UIColor lightGrayColor];
        break;
    case CellDeselected:
        self.backgroundColor = [UIColor whiteColor];
        break;
    default:
        break;
}

customCell.tag = !customCell.tag;
于 2013-10-26T04:31:58.850 に答える
0

このようにして...

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    str = [YourArray objectAtIndex:indexPath.row];//str is a string variable
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSString *cellIndentifier = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIndentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIndentifier];
    }
    cell.textLabel.text = [reminder objectAtIndex:indexPath.row];

    cell.backgroundColor = [UIColor whiteColor];

    if ([str isEqualToString:[reminder objectAtIndex:indexPath.row]])
    {
        cell.backgroundColor = [UIColor grayColor];
    }

    return cell;
}

これをカスタムセルに使用できます.....

于 2013-10-26T04:33:22.413 に答える
0

このデリゲート メソッドを使用する

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

選択されたセルと選択されていないセルを管理するメソッドをここで呼び出します。

于 2013-10-26T04:26:04.963 に答える
0

セル スタイルを設定:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

あなたのコードは動作します。ただし、選択したセルのみに色を設定します。セルが押されたときに色を設定する必要がある場合は、このメソッドをオーバーライドします。

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
于 2015-02-09T07:26:25.377 に答える