2016-10-15 3 views
1

Я пытаюсь сделать segue от viewcontroller до 2-го контроля, только когда мое условие выполнено. Я подключил segue от кнопки в viewcontroller к контроллеру 2ndview. До сих пор у меня есть:Условный Segue при передаче данных?

@IBAction func switchView(_ sender: AnyObject) { 
     // if a and b's textfields aren't empty 
     if(!(a.text?.isEmpty)! && !(b.text?.isEmpty)!) { 
      a1 = a.text!; 
      b1 = b.text!; 
     }else{ 
      // do something 
     } 

    } 

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool { 
    if(identifier == "2ndviewcontroller") { 
     if(!(a.text?.isEmpty)! && !(b.text?.isEmpty)!) { 
      return true 
     } 
    } 
    return false 
} 

С этим, я был в состоянии сделать SEGUE только когда текстовые поля А и Б являются не пустыми. Это именно то, что я хочу, но я также хочу передать данные с viewcontroller на 2ndviewcontroller.

func prepForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "2ndviewcontroller" { 
     let 2ndviewcontroller = segue.destination as! 2ndviewcontroller 
      2ndviewcontroller.c = a 

     } 
    } 
} 

Я использовал приведенный выше код для передачи данных с viewcontroller на 2ndviewcontroller. Проблема в том, что я не знаю, как их объединить с обоими данными, и только выполнить segue при выполнении условия. Когда у меня есть обе функции, функция bool выполняется правильно, но prepForSegue не передает данные. Когда я комментирую функцию bool, prepForSegue передает данные, но я не могу применить условие для создания segue.

Редактировать: исправлено с использованием метода prepareForSegue, приведенного в комментариях ниже.

+2

Зачем вам комбинировать их? Это два разных метода. После принятия решения о том, следует ли выполнять сеанс, другой позволяет вам передавать данные по мере необходимости. Какие данные вы передадите, если segue не должен выполнять? –

+0

Когда у меня есть обе функции, функция boolean выполняется правильно и делает segue при выполнении условия. Однако функция, которая передает данные, не работает. Когда я комментирую логическую функцию, я могу передать данные в порядке, но, конечно, я делаю segue, как только я нажимаю кнопку, независимо от того, выполнено ли условие. Я уточнил свой вопрос, чтобы уточнить. – Chrine

+2

Оба должны быть выполнены. Правильное имя метода - 'prepareForSegue', а не' prepForSegue'. –

ответ

2

Как указано в комментариях, имя метода должно быть prepareForSegue, а не prepForSegue.

Смежные вопросы