2017-08-12 4 views
1

初めてアプリが読み込まれている場合は、Segueを実行しようとしています。 私のプリントメッセージはデバッガで見ることができますが、Perform Segueは動作していません。私は何の誤りもありません。 誰かが私に何か間違って教えてもらえますか?ViewDidLoadでSegueを実行

import UIKit 
import LocalAuthentication 
let isFirstLaunch = UserDefaults.isFirstLaunch() 
extension UserDefaults { 
    // check for is first launch - only true on first invocation after app install, false on all further invocations 
    // Note: Store this value in AppDelegate if you have multiple places where you are checking for this flag 
    static func isFirstLaunch() -> Bool { 
     let hasBeenLaunchedBeforeFlag = "hasBeenLaunchedBeforeFlag" 
     let isFirstLaunch = !UserDefaults.standard.bool(forKey: hasBeenLaunchedBeforeFlag) 
     if (isFirstLaunch) { 

      UserDefaults.standard.set(true, forKey: hasBeenLaunchedBeforeFlag) 
      UserDefaults.standard.synchronize() 
     } 
     return isFirstLaunch 
    } 
} 

class loginVC: UIViewController { 





    override func viewDidLoad() { 

     super.viewDidLoad() 

     if isFirstLaunch == false { 
      performSegue(withIdentifier: "setPassword", sender: self) 
      print("testFalse") } 
      else { 
      performSegue(withIdentifier: "setPassword", sender: self) 
      print("testTrue")} 


     //  Do any additional setup after loading the view, typically from a nib. 




    } 
+1

ログには何が印刷されますか? – Vyacheslav

+0

最初の起動時には 'testTrue'、それ以外では' testFalse'ですか? – Vyacheslav

+1

修正してください。ログの最初の行はtestFalseです。 –

答えて

5

viewDidLoad()内からperformSegue()を使用することはできません。それをviewDidAppear()に移動します。

viewDidLoad()時間では、現在のビューはウィンドウにまだ添付されていないので、まだセグをすることはできません。

+0

Smartcatありがとうございます。 ViewDidAppear()にコードを移動し、今は正常に動作します! –

0

また、別のアプローチを使用することができます - isFirstLaunchブール

UIApplication.shared.keyWindow?.rootViewController = setPasswordViewController

0

に応じて、お好みのビューコントローラにメインウィンドウのrootViewControllerを変更私はあなたにもDispatch.main.async

にあなたのセグエを置くことができると思います
DispatchQueue.main.async { 
     if isFirstLaunch == false { 
      performSegue(withIdentifier: "setPassword", sender: self) 
      print("testFalse") 
     } else { 
      performSegue(withIdentifier: "setPassword", sender: self) 
      print("testTrue") 
     } 
    } 
関連する問題