swift:didSelectRowAtIndexPath

时间:2017-03-12 15:20:23

标签: ios swift uitableview swift3

我有tableViewController。我想点击1个单元格并获取print("0"),然后点击2个单元格并获取print("1")

但我的代码不起作用。为什么呢?

import UIKit

class MasterViewController: UITableViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
    tableView.dataSource = self
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

// MARK: - Table view data source

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

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 10 
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: String(format: "Cell%d", indexPath.row), for: indexPath)
    return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    if indexPath.row == 0 {
        print("0")
    }

    else if indexPath.row == 1 {
        print("1")
        self.performSegue(withIdentifier: "detailSegue", sender: self)
    }

}

2 个答案:

答案 0 :(得分:2)

在Swift 3中,UITableViewController中方法的签名是

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

答案 1 :(得分:0)

似乎您正在尝试在Swift 3和旧版本之间进行混合。请将其更改为:

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