Проверьте, представляет ли viewcontroller еще один из родительского VC - PullRequest
0 голосов
/ 29 марта 2019

У меня есть Viewcontroller, который представляет другой, если я нажимаю кнопку.Я хочу обнаружить, если он представляет другой viewcontroller, но из родительского VC, который имеет ссылку на этот viewcontroller.Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Мы хотим, чтобы A знал, когда был представлен C.

A -> B -> C

Вы можете использовать метод делегата для взаимодействия с родительскими VC с отношением один-ко-многим.

protocol BDelegate: class {
  func BVCDidPresentCVC(_ BVC: B)
}

class B {
weak var delegate: BDelegate?
func presentCVC() {
   delegate?.BVCDidPresentCVC(self)
}
}

extension A: BDelegate {
  func BVCDidPresentCVC(_ BVC: B) {
    // A knows B presented to C
  }
}

Если вы хотите, чтобы отношение «многие ко многим» (многие VCS знают, что C был представлен), используйте уведомления

class A {
  func setupNotifications() {
    // A.observeNotifcationCVCPresented
  }
}

Class B {
  func presentCVC() {
    //Notification.notifyCVCPresented
  }
}
1 голос
/ 29 марта 2019

Вы можете добавить наблюдателя уведомлений на свой родительский контроллер представления и опубликовать уведомление от отображенного дочернего контроллера представления, чтобы уведомить наблюдателя.

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