UITableViewCell中。如何在触摸期间突出显示单元格?

时间:2012-05-01 17:54:28

标签: ios uitableview custom-cell

我有一个自定义tableViewCell。我想通过突出显示来指示用户触地。单元格选择样式为UITableViewCellSelectionStyleBlue。在父控制器中,我设置了self.clearsSelectionOnViewWillAppear = YES

我应该好好去。不。选择仍然坚持细胞。我想要的只是在触地持续时间内的选择指示。外观应立即返回到未选中的外观上。

我该怎么做?

干杯,
道格

5 个答案:

答案 0 :(得分:43)

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

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

}

答案 1 :(得分:13)

在Swift示例下,使用didHighlightRowAtIndexPath更改触摸时单元格的背景颜色,didUnhighlightRowAtIndexPath重置颜色 - 请参阅下文:

// MARK: UITableViewDelegate

func tableView(tableView: UITableView, didHighlightRowAtIndexPath indexPath: NSIndexPath) {
  if let cell = tableView.cellForRowAtIndexPath(indexPath) {
     cell.backgroundColor = UIColor.greenColor()
  }
}

func tableView(tableView: UITableView, didUnhighlightRowAtIndexPath indexPath: NSIndexPath) {
  if let cell = tableView.cellForRowAtIndexPath(indexPath) {
     cell.backgroundColor = UIColor.blackColor()
  }
}

答案 2 :(得分:0)

在不调用超级

的情况下覆盖- (void)setSelected:(BOOL)selected animate:(BOOL)animated

答案 3 :(得分:0)

这有效:

它获取backgroundview的单元格边框看起来像seperator。不要更改Interface builder中的默认tableview设置。确保UITableViewCellSelectionStyleNone未设置为selectionstyle。我正在粘贴工作代码。 :

   - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *kCellIdentifier = @"PlayListCell";
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kCellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kCellIdentifier];
}
MPMediaPlaylist *playList = [playlistCollection objectAtIndex:indexPath.row];
cell.textLabel.text = playList.name;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
 // cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%d Songs",[playList.items count]];
MPMediaItemCollection *playListMediaCollection = [playlistCollection objectAtIndex:indexPath.row ];

cell.imageView.image =[UIImage imageWithCGImage:[self getImageForCollection:playListMediaCollection.items]];

// the main code which make it highlight

UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor colorWithRed:170.0f/255.0 green:170.0f/255.0 blue:170.0f/255.0 alpha:1.0f];
[bgColorView.layer setBorderColor:[UIColor blackColor].CGColor];
[bgColorView.layer setBorderWidth:1.0f];
[cell setSelectedBackgroundView:bgColorView];


return cell;

}

答案 4 :(得分:-4)

我遇到了同样的问题。下面的代码非常适合我。

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

[[tableView cellForRowAtIndexPath:indexPath] setBackgroundColor:[UIColor blueColor]];
[table reloadData];
}