我有下面的didSelect row函数代码,目标是让两个表根据触摸的表行执行不同的操作。第一部分很好。如果tableView 2被触摸,则打印行工作,行被取消选择,但如果tableView 3被选择,则不会调用打印。两个表视图在viewController中都有出口。

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        if tableView == self.tableView2 {

            sorted = true

            print ("TEST")

            filteredDevices.removeAll()
            filteredOS.removeAll()
            filteredReported.removeAll()
            filteredMac.removeAll()
            filteredVersion.removeAll()



            let facility = defaults.object(forKey: "facility") as! String



        self.tableView.reloadData()

        tableView2.deselectRow(at: tableView2.indexPathForSelectedRow!, animated: true)

        }

        if tableView == tableView3 {

            sorted = true

            print ("test")

            filteredDevices.removeAll()
            filteredOS.removeAll()
            filteredReported.removeAll()
            filteredMac.removeAll()
            filteredVersion.removeAll()



            self.tableView.reloadData()
            print ("test")

            tableView3.deselectRow(at: tableView3.indexPathForSelectedRow!, animated: true)
        }



    }

最佳答案

很可能您忘记在TableViewController中设置tableView3的委托。

tableView3.delegate = self

因为tableView2正在工作,所以您必须已经为tableView2设置了这样的行。只需为tableView3添加一个,就应该很好了。

关于swift - didSelectRowAt有两个表Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45245561/

10-13 03:55