我已经为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语句但是没有工作。
任何帮助将不胜感激。
答案 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