我的表格视图未调用didSelectRowAt

时间:2019-04-25 17:08:58

标签: ios swift uitableview

我想从UITableView单元格过渡到视图控制器。我的didSelectRowAt无法正常工作。

这是代码:

import UIKit

class ViewController: UIViewController, UITableViewDelegate {

    @IBOutlet weak var tableView: UITableView!
    var goals = [String]()

    @IBAction func onAddTapped() {
        let alert = UIAlertController(title: "Add Goal", message: nil, preferredStyle: .alert)
        alert.addTextField { (dessertTF) in
            dessertTF.placeholder = "Enter Goal"
        }
        let action = UIAlertAction(title: "Add", style: .default) { (_) in
            guard let goal = alert.textFields?.first?.text else { return }
            print(goal)
            self.add(goal)
        }
        alert.addAction(action)
        present(alert, animated: true)
    }

    func add(_ goal: String) {
        let index = 0
        goals.insert(goal, at: index)

        let indexPath = IndexPath(row: index, section: 0)
        tableView.insertRows(at: [indexPath], with: .left)
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
        performSegue(withIdentifier: "segue", sender: self)
    }

}

extension ViewController: UITableViewDataSource {

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return goals.count
    }



    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
        let dessert = goals[indexPath.row]
        cell.textLabel?.text = goals
        return cell
    }

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
        guard editingStyle == .delete else { return }
        desserts.remove(at: indexPath.row)

        tableView.deleteRows(at: [indexPath], with: .automatic)
    }
}

1 个答案:

答案 0 :(得分:0)

问题是您没有正确创建单元格。

cellForRow 功能更改的内部 let cell = UITableViewCell()

对此:

let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

请确保在情节提要文件中,将单元格标识符设置为“单元格”