2016-05-19 17 views
3

私は読み込み画面を持つ単純なアプリケーションを持っています。ここでは、NSUserDefaultsのユーザーの詳細を確認し、ログインまたはサインアップ画面にジャンプします。ロード画面用performSegueWithIdentifierがviewDidLoadから呼び出された場合に動作しない

のviewDidLoad()は次のようになります。ここでは

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    loadingVM = LoadingVM() as LoadingVM 

    print("LoadingVC") 
    checkStoredUser() 
} 

がcheckStoredUser(ある)

func checkStoredUser() 
{ 
    storedUserStatus = loadingVM.returnStoredUserStatus() 

    if(storedUserStatus == true) 
    { 
     performSegueWithIdentifier("loadingToLoginVC", sender: self) 
    } 
    else 
    { 
     performSegueWithIdentifier("loadingToSignUpVC", sender: self) 
    } 
} 

あなたが見ることができるように、私はどこに基づいて、ここから行くことに決めますloadingVM.returnStoredUserStatus()が返すもの。私はこれが返されるはずのものを返すと確信していますが、何も起こりません。

func checkStoredUser() 
{ 
    storedUserStatus = loadingVM.returnStoredUserStatus() 

    let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1.0 * Double(NSEC_PER_SEC))) 
    dispatch_after(delayTime, dispatch_get_main_queue()) 
    { 
     if(self.storedUserStatus == false) 
     { 
      self.performSegueWithIdentifier("loadingToSignUpVC", sender: self) 
     } 
     else 
     { 
      self.performSegueWithIdentifier("loadingToLoginVC", sender: self) 
     } 
    } 
} 
:ここ

はprepareForSegue()

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
{ 
    print("prepareForSegue") 

    if(segue.identifier == "loadingToSignUpVC") 
    { 
     let signUpViewCotroller = (segue.destinationViewController as! LocalSignUpVC) 
    } 
    else if(segue.identifier == "loadingToLoginVC") 
    { 
     print("loadingToLoginVC") 

     let loginViewCotroller = (segue.destinationViewController as! LoginVC) 
    } 
} 

は、私はいくつかの掘削を行なったし、動作しているようだが、それはこのようにそれを行う権利を言及しないように非常に実用的ではありません奇妙な提案を見つけたです

誰も私にここで何が起こっているのか説明することができます、なぜこれは動作しませんどのように正常に動作させるには?私がこれに遭遇したのは初めてで、これに関する情報を見つけることができないようです。

答えて

9

説明:あなたはcheckStoredUser()を呼び出すとき

あなたのビューはまだ現れていません。

EASY FIX:

はこのようviewDidAppear()に入れて:

override func viewDidAppear(animated:Bool) { 
    super.viewDidAppear(false) 
    checkStoredUser() 
} 
+0

:)簡単でした)。私はviewDidLoadから関数を呼び出すことができたら、doStuff()と言うと、doStuff()からsegueを実行することはOKですが、意味があると思います。おかげで – daydr3am3r

+0

幸せに助けてください:D – Coder1000

関連する問題