同一类中的两个“ performSegue”分配给不同的Viewcontrollers

时间:2018-09-29 19:56:30

标签: swift button uiviewcontroller uistoryboardsegue

我正在尝试使用两个不同的按钮转到两个不同的VC。使用'newGeneratedListBtn,我只想转到vc1。使用“ newEmptyList”按钮,我想使用有效的bool值进入vc3。但是,当我单击第一个按钮“ newGeneratedListBtn”转到vc1时,出现错误:“无法将类型'AppName.vc1'的值强制转换为'AppName.vc3'。

好像当我单击按钮到vc1时,它尝试发送与我要发送到vc3相同的值。我该如何解决?

coverage.txt

}

2 个答案:

答案 0 :(得分:0)

您需要强制转换为特定的标识符

override func prepare (for segue: UIStoryboardSegue, sender: Any!) {
    super.prepare(for:segue,sender:sender)
    if segue.identifier == "valueSender2" {
       let vc = segue.destination as! ListView
       vc.newEmptyListValue = value 
    }
    else {
       // it's unwindSegueToVC1
    }
}

都是

performSegue(withIdentifier: "unwindSegueToVC1", sender: self) 
performSegue(withIdentifier: "valueSender2", sender: self)

通话prepare

答案 1 :(得分:0)

问题是prepare(for:sender:)的实现只有一个 ,如下所示:

override func prepare (for segue: UIStoryboardSegue, sender: Any!) {

        let vc = segue.destination as! ListView
        vc.newEmptyListValue = value
}

两者都通过该一种方法。您必须使用开关或其他条件来找出哪个序列,并发送适合该序列的信息。