Назначить делегата для экземпляра класса - PullRequest
0 голосов
/ 19 сентября 2018

Привет, ребята, надеюсь, у вас все хорошо.У меня есть сомнения в том, что когда я пытаюсь использовать пользовательскую функцию делегата, функция обратного вызова не вызывается без использования подготовительного сегмента или текущего контроллера представления, возможно ли достичь этого без этих двух понятий, используемых только для непосредственного управления передним и задним контроллерами,Просто я говорю, что у меня есть 3 viewControllers, и я хочу обновить свою метку firstviewcontroller, когда я что-то сделал в контроллере третьего вида.Возможно ли это через делегата?Пожалуйста, помогите мне, я борюсь за последние два дня, я не мог найти ответ, поэтому, пожалуйста, наведите меня.

Вот мой код В моем контроллере третьего вида

protocol ThirdViewControllerDelegate: class {    
    func updateLabel(title: String)
}

Тогда я создалсвойство weak var delegate: ThirdViewControllerDelegate?

И я присвоил значение в

@IBAction func thirdControllerButtonTapped(_ sender: UIButton) {        
    delegate?.updateLabel(title: "iOS_Developer")

    dismiss(animated: true, completion: nil)
}

И я принял этот делегат в моем первом контроллере представления и

lazy var thirdController = ThirdViewController()
thirdController.delegate = self

func updateLabel(title: String) {
    print("Your updated Label is \(title)")
}

Но этофункция не вызывается.Вот как я могу установить ссылку на делегат, пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 19 сентября 2018
override func prepare(for segue: UIStoryboardSegue, 
      sender: Any?) {
    if let vc = segue.destination as? ThirdViewController {
        vc.delegate = self
    }
}

или:

let vc = ThirdViewController()
vc.delegate = self
self.navigationController?.pushViewController(vc, animated: true)

См. https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621887-pushviewcontroller

Вот схема, которая, как мы надеемся, показывает, как контроллеры представления взаимодействуют друг с другом через делегатов:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...