Переходы ViewController, ошибки не ясны - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть вопрос, пожалуйста. У меня возникли проблемы с переходами ViewController. Мой установочный код показан ниже:

Мой MainViewController такой:

override func viewDidLoad() {
    super.viewDidLoad()    

    let screenSize: CGRect = UIScreen.main.bounds

    //..positioning code

    do {
        AudioManager.sharedInstance.startNeonSignSound()
    } catch {
        print("couldn't load sound file")
    }

    if (entranceMusicOnceBool == false) {
         audioManager.startEntranceMusic()
         entranceMusicOnceBool = true
    }
}
@IBAction func startButtonPressed(_ sender: UIButton) {

    audioManager.stopEntranceMusic()
    audioManager.startCampaignMusic()

    let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let newViewController = storyBoard.instantiateViewController(withIdentifier: "GameVC") as! GameViewController
    let appDelegate = (UIApplication.shared.delegate as! AppDelegate)
    appDelegate.window?.rootViewController = newViewController
}

Затем в GameViewController:

var scene1: CampaignSelectScene?

//Campaign screen
override func viewDidLoad() {
    super.viewDidLoad()

    AudioManager.sharedInstance.startCampaignMusic()

    self.view.frame = self.view.bounds

    let view = self.view as! SKView

    //Restores view to default
    view.transform = origidentity

    self.view.gestureRecognizers?.removeAll()
    let screenSize = UIScreen.main.bounds
    let screenWidth = screenSize.width
    let screenHeight = screenSize.height
    view.frame.size.height = screenHeight
    view.frame.size.width = screenWidth

    if (UIDevice.current.userInterfaceIdiom == .pad) {      
        scene1 = CampaignSelectScene(size: CGSize(width: 512, height: 909))
        scene1!.scaleMode = .aspectFit
    } else {
        scene1 = CampaignSelectScene(size: CGSize(width: 375, height: 667))
        scene1!.scaleMode = .aspectFit
    }

    view.ignoresSiblingOrder = true

    // Present the scene
    scene1?.viewController = self

    view.showsFPS = true
    view.showsNodeCount = true

    let crossFade = SKTransition.crossFade(withDuration: 1.0)
    view.presentScene(scene1!, transition: crossFade)
}


func returnToMainMenu() {

    self.scene1 = nil
    self.removeFromParent()
    self.view = nil
    self.removeGesture()

    let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let newViewController = storyBoard.instantiateViewController(withIdentifier: "MainVC") as! MainViewController
    let appDelegate = (UIApplication.shared.delegate as! AppDelegate)
    appDelegate.window?.rootViewController = newViewController

}

Когда я вызываю returnToMainMenu, он вызывает Mainснова экран;то есть он работает, но после нажатия кнопки «Пуск» на главном экране (второй раз) и возврата к GameViewController он застревает, когда я хочу идти дальше в игровой сцене. Это как если бы вызов startButtonPressed дважды привинтил его

Я получаю следующие ошибки: "SKView: ignoreRenderSyncInLayoutSubviews - НЕТ. Вызов _renderSynchronouslyForTime без обработчика"

Может быть полезно упомянуть, что получаются те же ошибкипри первом запуске нажмите на GameViewController

Есть идеи?

...