2017-07-07 49 views
0

我在SpriteKit做一個小遊戲,我有一個布爾值存儲,檢查是否是第一次用戶玩我的遊戲。如果是這樣,我希望應用將他重定向到另一個視圖控制器,並在其中輸入他的角色名稱。斯威夫特執行segue沒有點擊按鈕

但是,我無法讓我的應用程序這樣做。

在我的 「GameViewController.swift」 我有這樣的代碼:

override func viewDidLoad() { 
    super.viewDidLoad() 

    checkGame() 

    if let view = self.view as! SKView? { 

     // Load the SKScene from 'GameScene.sks' 
     if let scene = SKScene(fileNamed: "GameScene") { 
      // Set the scale mode to scale to fit the window 
      scene.scaleMode = .aspectFill 

      // Present the scene 
      view.presentScene(scene) 
     } 

     view.ignoresSiblingOrder = true 

     view.showsFPS = true 
     view.showsNodeCount = true 
    } 
} 

func checkGame() { 
    //Check game 
    let firstPlay:Bool = appData.bool(forKey: "\(GameData.firstPlay)") 
    print(firstPlay) 

    if firstPlay == false { 
     print("Heading for setup") 
     self.performSegue(withIdentifier: "GoToSetup", sender: nil) 
    } 
} 

然而, 「設置視圖 - 控制」 未加載。我可以通過點擊按鈕來控制賽格,但那不是我想要的。我希望它在視圖加載後立即發生。

任何想法?

回答

1

可以通過編程調用以下配置的SEGUE:

self.performSegueWithIdentifier("segueId", sender: self); 
1

我不知道你所說的「設置視圖 - 控制」不裝」的意思,但通常我們不會在執行塞格斯。viewDidLoad這時,認爲剛剛被加載到內存中,並沒有出現在這個時候執行賽格瑞是種奇怪的事情

,我建議你在viewDidAppear()執行SEGUE:。

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated: animated) 
    performSegue(withIdentifier: "GoToSetup", sender: nil) 
} 
0

如前所述,在viewDidLoad階段UIViewController不能完成任何UI交互,並執行Segue,因爲視圖不在視圖層次結構中。您可以在viewDidAppear(animated:Bool)處執行此操作。

+0

這是什麼給Sweeper的答案增加了什麼?這是對現有答案的「我同意」評論,因爲它沒有提供任何其他信息。 –