segue 如何仅与某些指定按钮一起使用

How segue works only with some specified buttons

我正在使用 Xcode 做一个项目。我有四个按钮,其中两个用于在视图之间传递数据,并希望另外两个用于跳转到另一个视图而不传递任何数据。前两个表现很好,将数据传递给另一个视图。但是当我点击剩下的两个时,应用程序崩溃说:

"2017-10-30 23:08:11.970500-0400 xxx[2557:65602] Could not cast value of type 'xxx.goalInfoViewController' (0x107f01580) to 'xxx.IOViewController' (0x107f019a0)."

代码如下:

@IBAction func monthlyIncomeAction(_ sender: Any) {
    numberForSegue = 1
    performSegue(withIdentifier: "outcomeSegue", sender: self)
}
@IBAction func MonthlyOutcomeAction(_ sender: Any) {
    numberForSegue = 2
    performSegue(withIdentifier: "incomeSegue", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: (Any)?) {
    let ioController = segue.destination as! IOViewController
    ioController.segueIndex = numberForSegue
}

您应该确保只有两个要在视图之间传递数据的 segue 可以 运行 在 prepare 方法中编码。让我们为 prepare 方法尝试下面的代码。

override func prepare(for segue: UIStoryboardSegue, sender: (Any)?) {
    if segue.identifier == "outcomeSegue" || segue.identifier == "incomeSegue" {
      return;
    }

    let ioController = segue.destination as! IOViewController
    ioController.segueIndex = numberForSegue
}  

或者

override func prepare(for segue: UIStoryboardSegue, sender: (Any)?) {
    if segue.destination is IOViewController {
        let ioController = segue.destination as! IOViewController
        ioController.segueIndex = numberForSegue
    }
}