是否可以为2个不同的视图控制器准备2次segue?

时间:2016-09-24 15:45:27

标签: swift uibutton segue

我是初学者,我正在努力完成我的第一次申请。很抱歉,如果我的问题太基础了,但我的代码中收到错误消息:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    let secVC: NavigationViewController = segue.destinationViewController as! NavigationViewController // here is the error
    secVC.receiveImeNaSladkarnica = Label1.text!
    secVC.KordaA = Shirina.text!
    secVC.KordaB = Duljina.text!
    secVC.PodImeNaObekt = Label2.text!

我创建了2个不同的按钮:Navi Me和More Info按钮。

第一个(Navi Me)与另一个名为NavigationViewContorller的视图控制器连接,在那里我使用prepare for segue发送我需要的所有数据。一切都很完美,但现在我创建了另一个名为(MoreInfo)的按钮。它与名为MoreInfoViewController的第三个视图控制器连接。我认为我已将所有内容连接起来,但是当我点击MoreInfo按钮时,应用程序停止工作,我收到以下错误:线程1:在标记的行中发出SIGBART信号。当这个segue用于另一个视图控制器时,我无法理解为什么它会断开,对于MoreInfoViewController来说是nt。你能告诉我该怎么做或给我一个如何解决它的例子

我试过了:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    switch segue.identifier {
 //error here->       case "VC1" :
        let secVC: NavigationViewController = segue.destinationViewController as! NavigationViewController
        secVC.receiveImeNaSladkarnica = Label1.text!
        secVC.KordaA = Shirina.text!
        secVC.KordaB = Duljina.text!
        secVC.PodImeNaObekt = Label2.text!

  //error here ->       case "VC2" :
        let secVC2: MoreInfoViewController = segue.destinationViewController as! MoreInfoViewController
        secVC2.receiveImeNaSladkarnica = Label1.text!
        secVC2.KordaA = Shirina.text!
        secVC2.KordaB = Duljina.text!
        secVC2.PodImeNaObekt = Label2.text!

    default:
        break

它仍然不起作用

1 个答案:

答案 0 :(得分:2)

每个segue都应该有一个唯一的字符串标识符 对于多视图控制器,请使用switch语句

switch segue.identifier {
    case "vc1" : 
       // prepare to go to vc1
    case "vc2" : 
       // prepare to go to vc2
    default : break
}

我昨天再次发表评论:

由于您是Swift的初学者,请首先考虑变量名称以小写字母开头的命名约定。