Я пытаюсь сделать 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, приведенного в комментариях ниже.
Зачем вам комбинировать их? Это два разных метода. После принятия решения о том, следует ли выполнять сеанс, другой позволяет вам передавать данные по мере необходимости. Какие данные вы передадите, если segue не должен выполнять? –
Когда у меня есть обе функции, функция boolean выполняется правильно и делает segue при выполнении условия. Однако функция, которая передает данные, не работает. Когда я комментирую логическую функцию, я могу передать данные в порядке, но, конечно, я делаю segue, как только я нажимаю кнопку, независимо от того, выполнено ли условие. Я уточнил свой вопрос, чтобы уточнить. – Chrine
Оба должны быть выполнены. Правильное имя метода - 'prepareForSegue', а не' prepForSegue'. –