удалить предыдущий контроллер из массива навигации - PullRequest
0 голосов
/ 03 апреля 2019

Здравствуйте. В моем приложении я перемещаюсь ко всем контроллерам случайно в точке с 5-го или 6-го контроллера, я перехожу к первому контроллеру, но когда я возвращаюсь, я перехожу к 5-му или 6-му контроллеру, я хочу этого, когда я снова перехожу к первому контроллеру. хочу удалить все предыдущие контроллеры, когда я вернусь, ничего не произойдет

например, когда я перехожу на 5-й, 6-й, а затем 1-й A -> B -> C -> D -> A

но я хочу этого A> B> C> D> A (в точке A удалить всю предыдущую запись)

Я двигаюсь вот так

let vc = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
        NavigationController.pushViewController(vc, animated: animated)

1 Ответ

0 голосов
/ 04 апреля 2019

Вы можете использовать navigationController?.setViewControllers([vc], animated: true).

Пример:

class ViewController1: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        print("navigationController?.viewControllers.count = \(navigationController?.viewControllers.count ?? -1)")
    }

    deinit {
        print("ViewController1 deinit")
    }

    @IBAction func pushButtonTapped(_ sender: Any) {
        let vcIdentifier = "SecondVC"
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewController(withIdentifier: vcIdentifier)
        navigationController?.pushViewController(vc, animated: true)
    }

}

class ViewController2: UIViewController {

    deinit {
        print("ViewController2 deinit")
    }

    @IBAction func push2ButtonTapped(_ sender: Any) {
        let vcIdentifier = "ThirdVC"
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewController(withIdentifier: vcIdentifier)
        navigationController?.pushViewController(vc, animated: true)
    }
}

class ViewController3: UIViewController {

    deinit {
        print("ViewController3 deinit")
    }

    @IBAction func push3ButtonTapped(_ sender: Any) {
        let vcIdentifier = "FirstVC"
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewController(withIdentifier: vcIdentifier)
        //this is what you want
        navigationController?.setViewControllers([vc], animated: true)
    }
}

вывод на печать:

navigationController?.viewControllers.count = 1
navigationController?.viewControllers.count = 1
ViewController1 deinit
ViewController2 deinit
ViewController3 deinit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...