UITableView didSelectRowAt indexPath未在自定义单元格

时间:2016-10-26 09:14:15

标签: ios iphone swift uitableview didselectrowatindexpath

我创建新的ViewController并拖动新的UITableView它可以工作,但在我之前的两个ViewControllers中无法工作。

以下所有我已经完成了:

  1. UITableViewDelegate .delegate = self
  2. UITableViewDataSource .datasource = self
  3. Swift3并且是didSelectRowAt not didDeselectRowAt
  4. .setEditing(true,animated:true)
  5. .allowsSelection = true
  6. .allowsSelectionDuringEditing = true
  7. SingelSelection
  8. 并且我的所有数据都可以加载到tableview中,唯一的东西是不能选择行,在MainViewController中实际上我只有一个表视图,另一个用于测试。

    enter image description here - 这是viewcontroller之一,我的tableview无法选择行但可以加载数据,这里我只有一个tableview,但要测试我创建一个新的表视图

    enter image description here - 这是第二个viewcontroller无法选择行

    这是我的MainViewController

    extension MainViewController: UITableViewDelegate, UITableViewDataSource {
    
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    
            return 10
        }
    
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
            if tableView == self.tableview_restaurants {
    
                let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! RestaurantsCell
    
                cell.label_name.text = "OMG Restaurant # \(String(indexPath.row))"
    
                return cell
            }
            else if tableView == self.tableview_test {
    
                let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TableviewtestCell
    
                cell.label_test.text = String(indexPath.row)
    
                return cell
            }
            else {
                let cell = UITableViewCell()
    
                return cell
            }
        }
    
        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    
            //tableView.deselectRow(at: indexPath, animated: true)
            if tableView == self.tableview_restaurants {
    
            }
            else if tableView == self.tableview_test {
                print("select this row")
                print(indexPath)
            }
        }
    }
    

    这是我的FilterViewController

    extension SearchFilterViewController: UITableViewDelegate, UITableViewDataSource {
    
    
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    
            var numberofrowsinsecion:Int = 0
    
            if (tableView == self.tableview_quickfilters) {
    
                numberofrowsinsecion = json_quickfilters["filters"].arrayValue.count
                //print(numberofrowsinsecion)
            }
    
            else if (tableView == self.tableview_cuisinetype) {
                numberofrowsinsecion = json_cuisinetype["cuisine_types"].arrayValue.count
                //print(numberofrowsinsecion)
            }
    
            return numberofrowsinsecion
        }
    
    
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
            if (tableView == self.tableview_quickfilters) {
    
                let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! QuickFiltersCell
    
                let filter = json_quickfilters["filters"].arrayValue
    
                if let filter_name = cell.label_quickfiltersname {
    
                    filter_name.text = filter[indexPath.row]["name"].stringValue
                    filter_name.font = Common.Config.FontSize.XL_L
                }
                return cell
            }
    
            else if (tableView == self.tableview_cuisinetype) {
    
                let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CuisineTypeCell
    
                let cuisinetype = json_cuisinetype["cuisine_types"].arrayValue
    
                if let cuisinetype_name = cell.label_cuisinetypename {
    
                    cuisinetype_name.text = cuisinetype[indexPath.row]["name"].stringValue
                    cuisinetype_name.font = Common.Config.FontSize.XL_L
                }
                return cell
            }
    
            else {
                let cell = UITableViewCell()
                return cell
            }
    
        }
    
    
        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    
            if (tableView == self.tableview_quickfilters) {
    
                print(indexPath)
    
                //let cell = tableView.cellForRow(at: indexPath) as! QuickFiltersCell
    
            } else if (tableView == self.tableview_cuisinetype) {
    
                print(indexPath)
    
                //let cell = tableView.cellForRow(at: indexPath) as! CuisineTypeCell
    
            }
    
        }
    
    }
    

1 个答案:

答案 0 :(得分:1)

你很可能在某个地方添加了一个取消单元格点击的轻击手势。在这里查看答案:https://stackoverflow.com/a/9248827/1286291