【问题标题】:Allowing table cell to be pressed only once只允许按一次表格单元格
【发布时间】:2013-09-30 19:41:11
【问题描述】:

在我的 iOS 应用程序中,我遇到了一个问题,即在某些操作完成之前能够多次选择表格单元格。

我的情况是我让用户输入一个值,然后点击提交。在尝试完全测试我的代码时,我注意到在我的活动指示器显示之前可以多次按下提交。这会导致多次提交。

我该如何解决这个问题?任何建议都会很棒。谢谢。

【问题讨论】:

    标签: ios uitableview didselectrowatindexpath


    【解决方案1】:

    tableView:didSelectRowAtIndexPath: 中,您可以禁用整个视图(包括所有 UITableViewCells)的用户交互:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        [self.view setUserInteractionEnabled:NO];
    }
    

    然后,无论您在哪里处理操作完成,重新启用视图:

    -(void)yourOperationIsFinished{
        [self.view setUserInteractionEnabled:YES];
    }
    

    【讨论】:

    • 是的,我看到了这种方法,但由于某种原因,我没有想到这种使用方式。谢谢,效果很好。
    【解决方案2】:

    您可以使用一个标志来指示单元格是否至少被选择过一次,最初是NO。一旦选择了表格视图单元格,就会调用方法tableView:didSelectRowAtIndexPath:。在这种方法中,您可以将标志设置为YES
    如果你还实现了方法tableView:willSelectRowAtIndexPath:,它在tableView:didSelectRowAtIndexPath:之前被调用,你可以返回提交的indexPath,只要你的标志是NO,或者在第一次调用tableView:didSelectRowAtIndexPath:之后返回nil .在这种情况下,单元格将不再被选中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      相关资源
      最近更新 更多