2016-10-28 3 views
0

Вот так, как я перемещаться между различными ViewControllers:Сцена Переход больше не работает после изменения ViewController

let newViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "viewController3") 
UIApplication.topViewController()?.present(newViewController, animated: true, completion: nil) 

со следующим расширением:

extension UIApplication { 
class func topViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? { 
    if let nav = base as? UINavigationController { 
     return topViewController(base: nav.visibleViewController) 
    } 
    if let tab = base as? UITabBarController { 
     if let selected = tab.selectedViewController { 
      return topViewController(base: selected) 
     } 
    } 
    if let presented = base?.presentedViewController { 
     return topViewController(base: presented) 
    } 
    return base 
} 

}

А вот это я вызываю сценарии в моем SKScene (несколько):

let transition = SKTransition.fade(withDuration: 2) 
let nextScene = NewScene(size: scene!.size) 
nextScene.scaleMode = .aspectFill 
scene?.view?.presentScene(nextScene, transition: transition) 

Все работает нормально, прежде чем переключать ViewControllers. Как только переключение было выполнено, я больше не могу ссылаться на переход в своем SKScene, приложение застыло без каких-либо ошибок с Xcode (iPad подключен к Mac с живой отладкой)

Знаете ли вы, что происходит?

Я использую Swift 3 и SpriteKit с помощью ViewControllers, чтобы иметь возможность использовать Vuforia static lib в прямой сцене ViewController (UIView).

ответ

0

Я наконец нашел решение, нужно уволить фактическое ViewController перед заменой на новый:

self.dismiss(animated: false) 

    let newViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "viewController2") 
    UIApplication.topViewController()?.present(newViewController, animated: true, completion: nil) 

Если отклонить вызов не будет сделано, это невозможно сделать новый переход сцены в новый ViewController.

Смежные вопросы