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)
}

Надеюсь это поможет!

Другие вопросы по тегам