Я хотів би запропонувати інший підхід до цієї проблеми. Замість використання навігаційного контролера для виведення контролера перегляду, використовуйте розмотані невістки. У цього рішення є кілька, але насправді важливих переваг:
- Контролер походження може повернутися до будь-якого іншого контролера призначення (не тільки попереднього), не знаючи нічого про місце призначення.
- Сегменти "Push" та "Pop" визначаються у табло, тому у контролерах перегляду немає коду навігації.
Ви можете знайти більш детальну інформацію в Відмотати перетікає крок за кроком . Як краще пояснити в попередньому посиланні, включаючи, як відправити дані назад, але тут я зроблю коротке пояснення.
1) Перейдіть до пункту призначення (не походження) контролера перегляду та додайте розмотаний вираз:
@IBAction func unwindToContact(_ unwindSegue: UIStoryboardSegue) {
//let sourceViewController = unwindSegue.source
// Use data from the view controller which initiated the unwind segue
}
2) CTRL перетягнути з контролера уявлення самого на значок виходу в контролері уявлення походження:
3) Оберіть функцію розкручування, яку ви створили кілька хвилин тому:
4) Виберіть розмотаний мозок і дайте йому ім'я:
5) Перейдіть до будь-якого місця контролера подання джерела і зателефонуйте на розмотувальний мозок:
performSegue(withIdentifier: "unwindToContact", sender: self)
Я знайшов такий підхід, коли ваша навігація починає ускладнюватися.
Я сподіваюся, що це комусь допоможе.