我有一个带有一些单元格的 tableView。每个单元格还包含一个按钮。当用户点击按钮时,单元格应该是不可点击的,但不是按钮。因此,当用户单击不可点击的单元格的按钮时,该单元格应该可以再次点击。
我试过:
cell.userInteractionEnabled = NO;
...但随后按钮不再可点击。
提前感谢您的努力。
编辑 我的意思是:当我单击一个单元格时,会打开一个新视图。但我希望,当单元格不可“点击”时,不会发生任何动作。
我有一个带有一些单元格的 tableView。每个单元格还包含一个按钮。当用户点击按钮时,单元格应该是不可点击的,但不是按钮。因此,当用户单击不可点击的单元格的按钮时,该单元格应该可以再次点击。
我试过:
cell.userInteractionEnabled = NO;
...但随后按钮不再可点击。
提前感谢您的努力。
编辑 我的意思是:当我单击一个单元格时,会打开一个新视图。但我希望,当单元格不可“点击”时,不会发生任何动作。
以哪种方式无法点击?如果您只是希望单元格不可选,您可能正在寻找这个:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
如果您想阻止在禁用选择时执行代码,只需检查didSelectRowAtIndexPath:
方法中的 selection 属性。像这样的东西:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (cell.selectionStyle != UITableViewCellSelectionStyleNone) {
//(your code opening a new view)
}
}
请记住,您仍然必须使用此属性,UITableViewCellSelectionStyleNone
当您不希望单元格可选择时设置为,并在您希望它再次可选择时设置回UITableViewCellSelectionStyleBlue
(或)。UITableViewCellSelectionStyleGray
斯威夫特版本:
cell.selectionStyle = .none
UITableViewCellSelectionStyleNone
通过设置为删除选择selectionStyle
。
cell.selectionStyle = UITableViewCellSelectionStyleNone;
并且什么都不做-tableView:didSelectRowAtIndexPath:
您可以在该委托方法中进行选择,例如,如果只有第一部分中的第一行有按钮并且不应该执行任何操作:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSIndexPath *indexPathForDisabledCell = [NSIndexPath indexPathForRow:0
inSection:0];
if([indexPath compare:indexPathForDisabledCell] != NSOrderedSame) {
//Do whatever you do with other cells
}
}
这也可以通过 Interface Builder 使用TableViewCell 上的用户定义的运行时属性来完成:
Key Path | Type | Value
selectionStyle | Number | 0