Swift: отклонение ViewController и создание другого ViewController

Я пытаюсь закрыть контроллер представления и одновременно представить еще один. Когда Level1Controller() сделано и вызывает self.dismissViewController()Я хотел бы, чтобы он взял меня на другой контроллер представления под названием EndScene(),

Это код, который сделал меня ближе всего.

   self.dismissViewControllerAnimated(true, completion: {() -> Void in
       let storyboard = UIStoryboard(name: "Main", bundle: nil)
       let nextViewConroller = storyboard.instantiateViewControllerWithIdentifier("endscene")
       self.presentViewController(nextViewConroller, animated: false, completion: nil)
   })

1 ответ

Решение

Вместо звонка dismissViewControllerAnimated на Level1Controller, вызовите это на контроллере представления, который представил это. Затем в блоке завершения вы можете представить EndScene так же, как вы делаете. Ошибка происходит потому, что на самом деле, так как вы удалили Level1Controller из окна не имеет смысла использовать его для представления другого контроллера представления.

Окно -> ParentViewController (здесь можно вызвать вызов) -> Level1Controller

Окно -> ParentViewController (представить EndScene по завершении) -> EndScene

Вам, вероятно, придется уведомить родителей Level1Controller что действие отмены было выполнено, и вы можете сделать это делегатом. Другой вариант (я не проверял это), чтобы сохранить увольнение в Level1Controller и подарок от presentingViewController,

self.presentingViewController.presentViewController...

Хотя не уверен, что если presentingViewController будет ноль, когда блок завершения вызывается.

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