Как закрыть все контроллеры представления, которые представлены модально inFront друг от друга с раскруткой Segue в Swift? - PullRequest
0 голосов
/ 30 декабря 2018

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

let destination = matchViewController()
let appDelegate:UIApplicationDelegate = UIApplication.shared.delegate!
let initialViewController = destination
let navigationController = UINavigationController(rootViewController: initialViewController)
appDelegate.window??.rootViewController = navigationController
appDelegate.window??.makeKeyAndVisible()

Я хочу использовать unwind segue для выхода. Но есть и другая проблема: последний контроллер представления будет отображаться много раз во многих различных ситуациях, поэтому я просто отклонил все представленные контроллеры модального представления вв этой ситуации я скорее не пользуюсь навигационным контроллером, но если мне пришлось использовать его, пожалуйста, скажите мне, где именно я должен это использовать?

1 Ответ

0 голосов
/ 30 декабря 2018

Два варианта:

  1. Отключить все контроллеры представления на корневом контроллере вида

    self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
    
  2. Отклонить всеviewControllers, пока он не имеет presentingController

    func dismissAllControllers() {
    
        guard let vc = self.presentingViewController else { return }
    
        while (vc.presentingViewController != nil) {
            vc.dismiss(animated: true, completion: nil)
        }
    }
    
...