swift didSelectAtIndexPath没有被触发

时间:2018-05-06 08:43:36

标签: ios swift uitableview

首先,我想描述一下我真正要做的事情。 我有两个tableViewControllers - 第一个包含帐单号码列表,第二个应显示帐单的详细信息,具体取决于帐单号码的哪个单元格被选中。

在我的第一个tableViewController我使用此功能从单元格中获取帐号并将其传递给 detailTableViewController

 override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    let indexPath = tableView.indexPathForSelectedRow
    let currentCell = tableView.cellForRow(at: indexPath!) as! CustomBillTableViewCell

    valueToPass = currentCell.billNumberLabel.text
    print(valueToPass)
    performSegue(withIdentifier: "billsDetailSegue", sender: self)

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "billsDetailSegue"){
        let detailController = segue.destination as! BillsDetailTableViewController
        detailController.receivedValue = valueToPass
    }
}

问题是didSelectRowAt函数根本没有被触发,在第一个tableView中的单元格选择之后只准备函数触发器并且它将空值传递给下一个视图。 / p>

3 个答案:

答案 0 :(得分:6)

您覆盖didDeselect而不是didSelectRowAt 你可能会设置一个用于点击单元格的segue 断开它并连接整个viewController的segue。

答案 1 :(得分:1)

也许您将UITableView'的选择样式设置为non-clickable

制作UITableView -> Selection -> Single SelectionUITableViewCell -> Selection -> Defaultsomething,但None

除外

答案 2 :(得分:0)

确保您已正确设置代理