swift didSelectRowAtIndexPath可以多次调用

时间:2015-03-15 02:42:04

标签: ios uitableview swift didselectrowatindexpath tableviewcell

我的桌面视图有问题,我可以轻拍我的细胞。但是,如果我快速敲击同一个细胞两次。它运行两次“didSelectRowAtIndexPath”。将2个相同的视图添加到导航控制器堆栈

这是功能:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    var VC = detaiLSuggestion_VC()
    self.navigationController?.pushViewController(VC, animated: true)

    var selectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!

    if selectedCell.backgroundColor == UIColor.formulaFormColor() {
        println("Buy Action")
        selectedCell.backgroundColor = UIColor.formulaMediumBlue()
        UIView.animateWithDuration(0.5, animations: {
            selectedCell.backgroundColor = UIColor.formulaFormColor()
        })
    } else {
        println("Sell Action")
        selectedCell.backgroundColor = UIColor.formulaGreenColor()
        UIView.animateWithDuration(0.5, animations: {
            selectedCell.backgroundColor = UIColor.formulaLightGreenColor()
        })
    }

为什么我能够选择两次相同的细胞?我将如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

为什么我能够两次选择同一个细胞?

因为细胞仍在屏幕上被点击。您可能希望使用单元格点击导航以外的其他操作,然后您不希望阻止将来的点击。如果不是这样的话,多选也会复杂得多。

我将如何解决这个问题?

一个简单的布尔标志表示已经点击了某些东西,或者你可能想要在呈现另一个视图控制器时将CollectionView的allowsSelection属性设置为NO