didSelectRowAt Swift 3即使在设置委托和dataSource后也不调用

Sri*_*tla 3 uitableview tableviewcell ios swift swift3

在StackOverflow上似乎已经多次询问过这个问题,但在搜索了几个小时之后,我仍然没有找到解决我问题的方法.

我在SecondViewController.swift中有一个表视图,我确实使它成为委托dataSource SecondViewController.swift,但是当单击表格单元格时,仍然没有触发didSelectRowAt方法.我试图将segue应用于另一个视图控制器,但didSelectRowAt方法本身不起作用.

我在表视图属性的故事板中选择了单选,我确保为表视图和原型单元启用了用户交互.

对于下面的SecondViewController.swift,请假设allEvents填充到allEvents数组中.我能够成功填充它们并在表格中显示它们.唯一的问题是单击该行以执行segue.另外,请忽略下面的尴尬缩进.

SecondViewController.swift

import UIKit

class SecondViewController: UIViewController, UITableViewDataSource,    UITableViewDelegate {

  @IBOutlet var tableView: UITableView!

  var allEvents: Array<JSON> = []

  override func viewDidLoad() {

    super.viewDidLoad()

    tableView.delegate = self
    tableView.dataSource = self

    //self.tabBarItem.image = myTabImage
    self.tabBarController?.tabBar.isTranslucent = false
    self.tabBarController?.tabBar.barTintColor = UIColor(red:0.25, green:0.25, blue:0.25, alpha:1.0)
    self.tabBarController?.tabBar.tintColor = UIColor.white

    //ASSUME ALL EVENTS ARE POPULATED INTO allEvents

  }

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


// MARK: Tableview Datasource
func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return allEvents.count
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    return 150
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("SEGUE")
    self.performSegue(withIdentifier: "oneSegue", sender: allEvents[indexPath.row])
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "eventViewTableCell", for: indexPath) as! EventViewTableCell        

    return cell
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   // let detailController = segue.destination as! EventDetailsController


}
}
Run Code Online (Sandbox Code Playgroud)

我已经在这几个小时了,仍然没有发现问题.我非常感谢任何帮助!

小智 11

您可能想再次检查您的tableview,选择单一选择.

我假设你选择No Selection作为下面的图片

在此输入图像描述

希望能帮助到你.