【发布时间】:2017-02-11 16:52:33
【问题描述】:
我希望在 viewController 之间进行信息传递的设置如下:1->2->3->2。目前我有一个设置来传递来自 VC 的信息
1->2。传递的信息是从表中选择单元格的 indexPath。需要传递信息,因为第二个 viewController'viewDidLoad() 中的代码取决于所选的单元格。它的设置如下(并且工作正常):
VC 1:
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(这也可以正常工作)。然而,在那个 third viewController 中,有一个返回按钮可以连接到第二个 viewController。问题是,第二个 viewController 的 viewDidLoad() 代码取决于从第一个 VC 传递的变量。由于它没有被通过(因为 segue 现在是从 3->2 而不是 1->2)应用程序崩溃。我不确定正确传输此信息的最佳方式是什么。应该怎么做?
【问题讨论】: