Свифт: Как убедиться, что бесконечные ViewController не накладываются друг на друга (как отменить их при необходимости)?

Я создаю простое приложение с тремя ViewController в конструкторе интерфейсов. Прямо сейчас они представлены в следующем порядке:

FirstVC> SecondVC> ThirdVC

  1. FirstVC

Показывает главное меню, кнопка воспроизведения подключена через конструктор интерфейса для показа SecondVC (сейчас нет кода).

  1. SecondVC

Простая игра. Когда игра заканчивается, я представляю ThirdVC программно.

let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewController(withIdentifier: "GameOverScreen") as UIViewController
    vc.modalPresentationStyle = UIModalPresentationStyle.currentContext
    vc.modalTransitionStyle = .crossDissolve

    self.present(vc, animated: true, completion: nil)

До (или во время) представления ThirdVC я хочу отклонить SecondVC, чтобы только в иерархии:

FirstVC> ThirdVC

настоящее.

  1. ThirdVC

Показывает простую игру поверх сообщения.

dismiss(animated: true, completion: nil)

Когда я отклоняю этот контроллер представления, я хочу вернуться к FirstVC или, скорее, потому что SecondVC уже удален, игрок автоматически возвращается на FirstVC.

Как я могу это сделать? Конечно, я знаю, как программно представлять и отклонять VC, но как я могу одновременно отменить VC, представляя новый VC? Или как правильно сделать это?

1 ответ

Вам лучше использовать navigationcontroller, а когда нажимается ThirdVC, делайте это в его viewDidLoad

 func optimizeNavigation()
{


    let viewControllers: [UIViewController] = self.navigationController!.viewControllers ;

    print("before optimize \(viewControllers.count)")

    for aViewController in viewControllers
    {
        if(aViewController is SecondVC)
        {
           aViewController.removeFromParentViewController()
        }
    }

      let viewControllers2: [UIViewController] = self.navigationController!.viewControllers ;

      print("after optimize \(viewControllers2.count)")

}

Таким образом, когда вы заходите в ThirdVC, вы возвращаетесь в FirstVC.

Другие вопросы по тегам