UITableViewDelegate didSelectRowAt 根据Row条件执行

UITableViewDelegate didSelectRowAt Conditionally Execute based on Row

我对能够根据用户选择的行有条件地执行代码很感兴趣。有没有办法将标识符与 cellForRowAt 中的每一行(单元格)相关联,以帮助区分选择哪一行用于 DidSelectRowAt 委托?

是的。您使用 DidSelectRowAt 方法是正确的。如果你有一个带有 table 的视图控制器,视图控制器将必须采用两个标准委托:UITableViewDataSourceUITableViewDelegate

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var table: UITableView!
    let message:[String] = ["Hello", "World", "How", "Are", "You"]

    /* Table with five rows */
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

    /*Have a simple table with cells being the words in the message */
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
        cell.textLabel?.text = message[indexPath.row]
        return cell
    }

    /*Optional method to determine which row was pressed*/
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
        print("I'm row number "+String(indexPath.row))
    }

    /*set the table's delegate and datasource to the view controller*/
    override func viewDidLoad() {
        super.viewDidLoad()
        self.table.delegate = self
        self.table.dataSource = self
    }
}

这将输出: I'm row number 1 回想一下,索引从零开始