如果不允许选择,如何避免点击表格视图单元格中的附件按钮?

时间:2015-03-16 11:48:23

标签: ios objective-c uitableview selection

我的表视图显示包含一些内容的单元格和自定义附件按钮。

当我点击一个单元格时,会启动一个5s的工作。我不希望用户在后台工作没有完成时点击一个单元格,所以我这样做:

self.tableView.allowsSelection = NO;

它工作正常,用户无法点击一个单元格。

我以前做过:

self.tableView.userInteractionEnabled = NO;

但我想在后台工作时滚动我的表格视图。问题是我也可以点击小区的配件按钮。

如何避免不丢失表视图滚动?

我能做到:

- (void)didSelectAccessoryButton:(UIButton *)pButton onEvent:(id)event{
    if(self.tableView.allowsSelection){
        //Usual accessory button code
    }
}

但配件按钮突出显示仍然存在,这意味着我需要在cellForRowAtIndexPath中进行操作:

[accessoryButton setShowsTouchWhenHighlighted:NO];

我只是希望allowsSelection = NO避免点击附件按钮......那么更好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我发现的最好方法是结合这个:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    //...
    tableView.allowsSelection = NO;
    [tableView reloadData];
    //...
}

用这个:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    //...
    accessoryButton.userInteractionEnabled = tableView.allowsSelection;
    //or cell.accessoryView.userInteractionEnabled = tableView.allowsSelection;
    //
}

当工作完成后,self.tableView.allowsSelection = YES;

这个解决方案困扰我的是需要检查内部cellForRowAtIndexPath这样做我还需要重新加载数据;但最终它只有3行。

感谢@virus提供简单的" userInteractionEnabled to accessoryButton" idea。