Swift: Можно ли использовать делегирование, когда оба представления не имеют прямой связи друг с другом? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть три ViewController: ViewController1, ViewController2 и ViewController3.

ViewController1 выдвигает ViewController2 на экран, и оба представления могут взаимодействовать друг с другом посредством делегирования.

ViewController2 выдвигает ViewController3 на экран.

Теперь возможно установить sh делегирование между ViewController1 и ViewController3? Я хочу, чтобы ViewController3 мог манипулировать меткой ViewController1.

1 Ответ

0 голосов
/ 18 февраля 2020

Лучшим способом в этом сценарии будет Notification Pattern

  // Notification posting
  NotificationCenter.default.post(name: NSNotification.Name(rawValue: "fromViewController3"), object: nil, userInfo: myDict) 


 // Register in ViewController1 to receive notification in your class ViewController1
 NotificationCenter.default.addObserver(self, selector: #selector(self.manipulateMyLabel(_:)), name: NSNotification.Name(rawValue: "fromViewController3"), object: nil)

 // handle notification
 func manipulateMyLabel(_ notification: NSNotification) {
        print(notification.userInfo ?? "")
        if let dict = notification.userInfo as NSDictionary? {
            if let newString = dict["labelValue"] as? String {
               // user newString to update the label text or something.
            }
        }
 }
...