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



我有一个包含一些单元格的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

相关内容

  • 没有找到相关文章

最新更新