我想建立在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