代码之家  ›  专栏  ›  技术社区  ›  Difeng Chen

segue如何仅与某些指定按钮一起工作

  •  0
  • Difeng Chen  · 技术社区  · 7 年前

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

    “2017-10-30 23:08:11.970500-0400 xxx[2557:65602]无法施展价值 类型为“xxx”。goalInfoViewController“(0x107f01580)到 “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
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   trungduc 邱林和    7 年前

    您应该确保只有两个在视图之间传递数据的段可以在内部运行代码 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
        }
    }  
    
    推荐文章