2

我正在使用带有 customCell 的 UITableView(CustomCell 有 2 个标签和一个 ImageView)。

在正常模式下,我需要所有单元格的白色。

如果用户按下特定单元格,则该单元格的颜色应为灰色(其余单元格应为白色)

如果用户释放相同的单元格,则该单元格的颜色应为橙色(其余单元格应为白色)

我怎样才能弄清楚?

我已经尝试过使用 setSelectedBackground、willSelectRowAtIndexPath 和 Gestures 方法。但是看不到同一个单元格的这 3 种颜色状态。这两个州中的任何一个都在合作。

任何想法我怎样才能实现相同的功能?

我已经使用选择器在 android 中实现了相同的功能。我希望在 iPhone 中具有相同的功能。有什么帮助吗?

提前致谢!

4

3 回答 3

7

在您的自定义单元格中编写这两个方法

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    self.contentView.backgroundColor=[UIColor greenColor];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    self.contentView.backgroundColor=[UIColor orangeColor];

}
于 2013-03-04T10:59:01.937 回答
3

如果你想要灰色那么

cell.selectionStyle=UITableViewCellSelectionStyleGray;  

或者你可以设置背景颜色didSelectRow

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView reloadData];
    UITableViewCell *cell=(UITableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
    [cell setBackgroundColor:[UIColor orangeColor]];
}  

如果您不想重新加载 tableData 那么您必须保存您的 previousSelected Index 值然后

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //Make oreange cell
    UITableViewCell *presentCell=(UITableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
    [presentCell setBackgroundColor:[UIColor orangeColor]];

    //make your previous cellBackgrod to clear, you can make it white as per your requirement
    UITableViewCell *previouscell=(UITableViewCell*)[tableView cellForRowAtIndexPath:previousSelectedCellIndexPath];
    [previouscell setBackgroundColor:[UIColor clearColor]];

    //save your selected cell index
    previousSelectedCellIndexPath=indexPath;
}
于 2013-03-04T10:48:05.157 回答
3

一个非常优雅的解决方案是覆盖 tableViewCells 的 setHighlighted: 方法。

- (void)setHighlighted:(BOOL)highlighted {
  [super setHighlighted:highlighted];
  if(highlighted) {
    _backView.backgroundColor = [UIColor blueColor];
  }
  else
  {
    _backView.backgroundColor = [UIColor blackColor];
  }
}

当用户点击单元格时, UITableView 将自动将选定的单元格highlighted@property 设置为 YES。

[_tableView deselectCellAtIndexPath:indexPath animated:NO];如果您想取消选中您的单元格,请不要忘记调用您的 didSelect tableView 委托方法!

于 2014-07-07T13:33:15.990 回答