Удалите ViewController из navigationStack и добавьте его новый экземпляр - PullRequest
1 голос
/ 01 ноября 2019

У меня есть SongNamesViewController со встроенным навигационным контроллером. Когда песня выбирается из списка, я открываю PlaySongViewController и добавляю в navigationController, используя следующую функцию:

func openPlaySongViewController() {     
  let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
  let playSongViewController = storyBoard.instantiateViewController(withIdentifier: "playSongViewController")
     self.navigationController?.pushViewController(playSongViewController, animated: true)
}

Теперь, сообщение приходит через удаленное push-уведомление. Пользователь нажимает на значок push-уведомления, а затем я отображаю песню, используя функцию «openPlaySongViewController ()». Если приходит другое push-уведомление, а затем я отображаю другой PlaySongViewController поверх существующего PlaySongViewController.

Текущий поток: (NavigationController)->SongNamesViewController>PlaySongViewController->PlaySongViewController

Как мне удалить существующий PlaySongViewController, который находится в navigationController, перед добавлением нового экземпляра PlaySongViewController?

Я пробовал следующее, ноPlaySongViewController, который находится в навигационном контроллере, не исчезает.

for viewController in self.navigationController!.viewControllers {                
     if viewController.isKind(of: PlaySongViewController.self) {                   
          viewController.removeFromParent()                                 
     }
}

1 Ответ

1 голос
/ 01 ноября 2019

topViewController возвращает то, что находится на вершине стека навигации. Таким образом, вы должны pop это при необходимости.

func removeLastControllerIfNeeded() {
    guard navigationController?.topViewController is PlaySongViewController else { return }
    navigationController?.popViewController(animated: true)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...