使单元格不可单击,但其上的按钮仍应可单击

时间:2013-08-12 14:38:46

标签: ios button uitableview clickable

我有一些带有一些单元格的tableView。每个单元格还包含一个按钮。当用户单击按钮时,单元格应该是不可点击的,而不是按钮。因此,当用户单击不可单击的单元格的按钮时,此单元格应再次可单击。

我试过了:

cell.userInteractionEnabled = NO;

...但是按钮不再可以点击了。

感谢您提前付出的努力。

修改 我的意思是:当我点击一个单元格时,会打开一个新视图。但我希望,当细胞不是“可点击的”时,不会发生任何动作。

4 个答案:

答案 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

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/#//apple_ref/c/tdef/UITableViewCellStyle

答案 3 :(得分:0)

快速版本:

cell.selectionStyle = .none