Prepare For Segue работает, когда данные отправляются контроллером второго представления
Я новичок в разработке для ios несколько дней назад, когда я учился отправлять данные из одного виртуального контейнера в другой, затем я использовал
override func prepare(for segue: UIStoryboardSegue, sender: self) {
if segue.identifire == "segue1" {
let data = segue.destinetion as! secondViewController
data.labelName = labelFirst.text
}
и теперь, когда я получаю данные от secondVC, я также использую почти тот же код, который видел в сети
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segue2" {
let secondVC = segue.destination as! secondViewController
secondVC.delegate = self
}
}
так что плз кто-нибудь может объяснить очень быстро, почему это выглядит так же, или какая разница
1 ответ
Чтобы отправить данные обратно из secondVC в firstVC, лучше использовать делегатов. Исходя из написанной вами строки "secondVC.delegate = self", вы уже прочитали статью по этому вопросу, и вам может потребоваться дополнительная информация.
В secondVC поместите следующий код за пределы области видимости. например выше
class secondVC: UIViewController {}
Код для размещения есть
protocol secondVCDelegate {
func didFinishTask(returnData: String)
}
Поместите следующую строку внутри области видимости secondVC
var delegate: secondVCDelegate?
Затем в firstVC наследуйте делегат secondVC, добавив secondVCDelegate в класс. (например: class firstVC: UIViewController, secondVCDelegate {}
)
Затем добавьте функцию в ваш первый ВК
func didFinishTask(returnData: String) {
//Do something here with returnData
print(returnData)
}
Надеюсь это поможет!