ОБНОВЛЕНО : ответ здесь очень прост.ViewController, который представлен модально со стилем представления «Over Current Context», не запускается ViewWillAppear
в представляемом VC, когда он отклонен.Ответ ниже работал как хак, но я искал более простое решение.То есть, изменение стиля представления на полноэкранный.
Поэтому я в итоге реализовал компактное решение - некоторые скажут, что это не ООП без протокола, и я согласен - но в рамках этогоприложение, оно решает проблему в контексте простой конструкции present / dismiss.
В представлении vc я добавил этот код.
let vc = storyboard.instantiateViewController(withIdentifier: "DetailView") as! DetailViewController
vc.masterVC = self
self.present(vc, animated: true, completion: nil)
Объявленная функция в masterVC длявызываться, когда модальное отклонение, например:
func calledWhenModalDismisses() {
// Do This
}
В всплывающем модальном DetailView я просто создаю элемент, указывающий на мастера:
var masterVC: MasterViewController?
А затем в моем удалении деталиЯ могу вызвать функцию, созданную в MasterVC.
masterVC?.calledWhenModalDismisses()
dismiss(animated: true, completion: nil)
Опять же, не совсем ООП-решение (без протокола), но я уверен, что это поможет кому-то с простым компактным решением.на простую проблему master / detail, когда представляющий vc должен быть предупрежден, поскольку деталь vc отклоняется.На самом деле Apple должна иметь функцию делегата, чтобы справиться с этим, когда виртуальный канал фокусируется, но они этого не делают.