单击按钮选择tableViewCell

时间:2014-07-09 10:23:21

标签: ios uitableview

我有一个tableView,带有自定义单元格。 在每个单元格中,我都有一个UIButton。当我单击单元格内的按钮时,我希望该单元格突出显示,但是当我单击单元格时,我不希望这种情况发生。 你知道怎么办? 谢谢

直到现在我有了这段代码:

- (IBAction)buttonMethod: (id)sender {
UIButton *b = (UIButton *) sender;
UITableViewCell *cell = (UITableViewCell *)[[[sender superview] superview] superview];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
[cell setSelected:YES animated:YES];
}

但是单元格也在-didSelectRow中突出显示。

- (UITableViewCell *)tableView: (UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"CustomCell";

CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
NSAssert(cell, @"cell -> nil");
NSDictionary *cellData = [_data objectAtIndex:indexPath.row];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;

[cell populateCellWithData:cellData];

return cell;
}

4 个答案:

答案 0 :(得分:1)

使用此UITableViewDelegate方法:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    return nil;
}

这样,当用户点击它们时,无法选择单元格,但您仍然可以以编程方式选择它们。

也使用

  

selectRowAtIndexPath:动画:的scrollPosition:

UITableView上的

代替setSelected:animated:上的UITableViewCell可能会更好。细胞可以重复使用,当它发生时,选择可能会消失。

答案 1 :(得分:0)

你必须设置cell.selectionStyle = UITableViewCellSelectionStyleNone;在tableView的cellForRowAtIndexPath方法中。

所以你可以在 - (IBAction)buttonMethod:(id)sender中设置这个样式。您可以在最后添加此行。见下文:

- (IBAction)buttonMethod: (id)sender {
       UIButton *b = (UIButton *) sender;
       UITableViewCell *cell = (UITableViewCell *)[[[sender superview] superview] superview];
       cell.selectionStyle = UITableViewCellSelectionStyleBlue;
      [cell setSelected:YES animated:YES];
      cell.selectionStyle = UITableViewCellSelectionStyleNone;

}

答案 2 :(得分:0)

您必须在tableView委托方法cellForRowATIndexPath中添加以下行。

cell.selectionStyle = - UITableViewCellSelectionStyleNone;

答案 3 :(得分:0)

只需像这样使用UITableViewDelegate

-(BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath{

    return NO;
}

但如果我是你,我会用UITableViewCellSelectionStyleNone改变[buttonMethod:]中单元格的背景颜色