我有一个包含一些单元格的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
)。
Swift版本:
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
}
}
这也可以通过界面生成器使用TableViewCell:上的用户定义的运行时属性来完成
Key Path | Type | Value
selectionStyle | Number | 0
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/#//apple_ref/c/tdef/UITableViewCellStyle