我想根據在tableView
中選擇的行,將數據從一個viewController傳遞到另一個viewController。要做到這一點,我已經實現了以下功能:準備segue返回nil爲indexPathForSelectedRow?
func tableView(_ messagesListTableView: UITableView, didSelectRowAt indexPath: IndexPath) {
messagesListTableView.deselectRow(at: indexPath, animated: true)
performSegue(withIdentifier: "individualMessageSegue", sender: self)
print(indexPath)//returns [0,0]... meaning the first row
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard segue.identifier == "individualMessageSegue" else{return}
if let indexPath = self.messagesListTableView.indexPathForSelectedRow{
let openedMessageConversation = fullOrderedMessageArray[(indexPath.row)] //cause app to crash because nil value
let destViewController: IndividualMessageVC = segue.destination as! IndividualMessageVC
destViewController.messageConvo = openedMessageConversation
}else{
print("it was nil")
}
}
我相信我擁有了一切設置正確,然而,儘管從didSelectRowAt
print語句總是爲[0,0](在該indexPath
返回值表中只有一節和一行),prepare
中的打印語句總是告訴我indexPath
是nil
。如果我刪除條件if let
,應用程序將崩潰,因爲fullOrderedMessageArray[(indexPath.row)]
包含零值。我不知道爲什麼它一直返回nil而不是另一個。
@SergeyGamayunov這樣做給我的錯誤,即「方法不會覆蓋任何方法從它的超類」 –