我有一些带有一些单元格的tableView。每个单元格还包含一个按钮。当用户单击按钮时,单元格应该是不可点击的,而不是按钮。因此,当用户单击不可单击的单元格的按钮时,此单元格应再次可单击。
我试过了:
cell.userInteractionEnabled = NO;
...但是按钮不再可以点击了。
感谢您提前付出的努力。
修改 我的意思是:当我点击一个单元格时,会打开一个新视图。但我希望,当细胞不是“可点击的”时,不会发生任何动作。
答案 0 :(得分:15)
以哪种方式不可点击?如果您只是想要无法选择单元格,那么您可能正在寻求这个:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
如果要在禁用选择时阻止执行代码,只需检查didSelectRowAtIndexPath:
方法中的选择属性。像这样:
-(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
)当你希望它可以再次选择时。
答案 1 :(得分:0)
通过将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
}
}
答案 2 :(得分:0)
这也可以通过InterfaceView使用TableViewCell上的用户定义的运行时属性来完成:
Key Path | Type | Value
selectionStyle | Number | 0
答案 3 :(得分:0)
快速版本:
cell.selectionStyle = .none