子类UItableViewCell选择

时间:2013-10-26 04:23:12

标签: ios iphone objective-c uitableview

我已经为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语句但是没有工作。

任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:0)

使用此委托方法

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

并调用此处管理选定和未选定单元格的方法。

答案 1 :(得分:0)

一种方法是在单元格上设置标签,然后使用它来设置背景颜色。

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;

答案 2 :(得分: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;
}

您可以将此用于自定义单元格.....

答案 3 :(得分:0)

使用UITableViewCell方法:[cell setSelectedBackgroundView:myBgColorView];Apple Documentation。 例如:

UIView *myBgColorView = [[UIView alloc] init];
myBgColorView.backgroundColor = [UIColor greenColor];
[cell setSelectedBackgroundView:myBgColorView];

答案 4 :(得分:0)

设置单元格样式:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

您的代码将有效。但是,您只设置了颜色选定的单元格。 如果在按下单元格时需要设置颜色,请覆盖此方法:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated