首先,我想描述一下我真正要做的事情。
我有两个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>
答案 0 :(得分:6)
您覆盖didDeselect
而不是didSelectRowAt
你可能会设置一个用于点击单元格的segue
断开它并连接整个viewController
的segue。
答案 1 :(得分:1)
也许您将UITableView'
的选择样式设置为non-clickable
。
制作UITableView -> Selection -> Single Selection
和UITableViewCell -> Selection -> Default
或something
,但None
答案 2 :(得分:0)
确保您已正确设置代理