我有一个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;
}
答案 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:]中单元格的背景颜色