我想建立在viewControllers之間傳遞信息的地方,如下所示:1-> 2-> 3-> 2。目前我有一個設置來傳遞來自VC 1-> 2的信息。傳遞的信息是從表中選擇單元格的indexPath。該信息需要傳遞,因爲第二個viewController'viewDidLoad()
中的代碼取決於所選的單元格。它被設置爲如下(和正常工作): VC 1:如何在3個視圖控制器之間傳遞信息?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard segue.identifier == "cellSelected" else {return}
let indexPath = self.tableView.indexPathForSelectedRow
let rowSelectedd = indexPath
let destViewController: MainPageCellSelectedViewController = segue.destination as! MainPageCellSelectedViewController
destViewController.rowSelected = rowSelectedd!
}
var rowSelectedd = IndexPath()
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "cellSelected", sender: rowSelectedd)
}
VC 2(使用被傳遞的信息)://這信息從製備 VAR rowSelected = IndexPath() MainPageVC
override func viewDidLoad() {
super.viewDidLoad()
if rowSelected.section == 0{
//do something
} else{
// do something else
}
}
在這第二的viewController有一個按鈕,塞格斯第三的viewController(這也能正常工作)。但是,在那個第三 viewController有一個後退按鈕,回到第二個viewController。問題是,第二個viewController的viewDidLoad()
代碼依賴於從第一個VC傳遞的變量。由於它沒有被傳遞(因爲現在從3> 2而不是1-> 2),應用程序崩潰。我不確定適當傳輸此信息的最佳方式是什麼。應該怎麼做?
可能重複[在視圖控制器之間傳遞數據](http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) – Rob