12

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

我试过:

cell.userInteractionEnabled = NO;

...但随后按钮不再可点击。

提前感谢您的努力。

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

4

4 回答 4

19

以哪种方式无法点击?如果您只是希望单元格不可选,您可能正在寻找这个:

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

于 2013-08-12T14:44:20.540 回答
3

斯威夫特版本:

cell.selectionStyle = .none
于 2018-12-13T13:52:09.530 回答
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
    }
}
于 2013-08-12T15:12:11.087 回答
0

这也可以通过 Interface Builder 使用TableViewCell 上的用户定义的运行时属性来完成:

Key Path | Type | Value

selectionStyle | Number | 0

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

于 2016-02-01T21:35:38.983 回答