触摸事件不会在UITableView上触发

时间:2017-01-07 21:53:40

标签: ios swift uitableview

所以,我在我的主UIViewController中有3个不同的UITableViews,我用SWITCH控制de content,评估它在'cellForRowAt'中的哪个tableview,但是3个表中只有2个触发'didSelectRowAt indexPath'事件。

   func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    switch tableView {
    case checkoutTable:
        //THIS RIGHT HERE IS NEVER EXECUTED
        if (indexPath as NSIndexPath).row == 0 {
            if self.calculateTotalsInCart() > 0 {
                performSegue(withIdentifier: "sgAddDescount", sender: self)
            }else{

                let alert:UIAlertController = UIAlertController(title: "Descuento Inaplicable", message: "No puedes aplicar descuento a una cuenta en ceros", preferredStyle: UIAlertControllerStyle.alert)
                let okButton:UIAlertAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
                alert.addAction(okButton)
                self.present(alert, animated: true, completion: nil)
            }
        }
        break
    case clientTable:
        if (indexPath as NSIndexPath).row == 0 {
            performSegue(withIdentifier: "clientSelection", sender: self)
        }
        break
    default:
        print("None Selected")
        break;
    }
}

当我单击任何其他UITableView时,会调用该方法,但是使用此特定表则不会。

我也设置了表的委托和数据源

http://imgur.com/ETP64zA

2 个答案:

答案 0 :(得分:0)

据我所知,你的代码没有任何问题,但是在某些地方你可能会错过一些我在阅读你的文本时无法理解的东西。这是一种简单的替代方法,它可以帮助你,< / p>

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if (tableView.tag == 200) {
        //checkoutTable
    }
    if (tableView.tag == 201) {
        //clientTable
    }
    if (tableView.tag == 202) {
        //your third table
    }
} 

我希望这可以帮助你。

答案 1 :(得分:0)

检查“属性”中的“选择”检查器是“单选”还是“无选择”。也可以在viewDidLoad

中启用tableview选择
tableView.allowsSelection = true