2016-05-27 1 views
3

から、私は与えられた環境で次のシナリオを持っていない:セグエコール動作しますが、viewWillAppear

のXcode v7.3.1
スウィフト2

ログインのViewController内からは、私が最初に持っていましたすでにユーザがログインしている場合、ログイン画面をバイパスするviewWillAppearメソッドでセグエコール以下:

override func viewWillAppear(animated: Bool) { 
    if PFUser.currentUser() != nil { 
     self.performSegueWithIdentifier("login", sender: self) 
    } 
    } 

セグエは働いていませんでしたので、私はどこseguブレークポイントを設定しましたeコールが行われ、実際にヒットしたことが確認されます。また、呼び出しをステップ実行し、例外がスローされないことを確認しますが、何らかの理由でセグが実行されません。

しかし、私はviewDidAppearメソッド内の同じコールを置く:

override func viewDidAppear(animated: Bool) { 
    if PFUser.currentUser() != nil { 
     self.performSegueWithIdentifier("login", sender: self) 
    } 
    } 

は再び、私はセグエコールがヒットされていることを確認しますが、この場合にはセグエが実際に行われています。だから、viewWillAppearメソッドで呼び出されたときに、正確に同じ呼び出しがうまくいかないが、viewDidAppear内で期待通りに動作するのはなぜだろうかと思います。最も困惑している部分は、呼び出しが行われているようだが、期待される動作は観察されないということです。私はこの問題に遭遇している誰かのためにグーグルを試みましたが、何かを見つけることができませんでした。

私はviewWillAppearから呼び出されていると思っていますが、リダイレクトされる前に簡単にログイン画面が表示されていますが、これはやや迷惑です。誰かが私がviewWillAppearから働くようになる方法についての解決策や提案があれば、私は大いに感謝しています。

+1

デフォルトのプレゼンテーションは「ログイン」シーンであり、必要に応じてその上にログオンシーンをモーダルで表示することをお勧めします。 – Paulw11

答えて

5

viewWillAppearメソッドでは、セグを実行できません。これは、ビューがまだ完全には表示されておらず、別のビューに切り替えることができないためです。このシナリオでは、ロードイメージなどがあり、セグが実行されないと消えてしまいます。これは、もちろん、viewDidAppearメソッドで行われます。

+0

これはこのようなものかもしれません。情報とお勧めをありがとう。 – djilo

+0

@djilo問題ありません! – penatheboss

関連する問題