2016-09-05 2 views
0
私はこのクラスを持っている

をポップnavigationcontrollerたびにセグエいます。基本的には、このページが表示されるたびに、ユーザーがログインしているかどうかを確認した上で、すぐにセグを実行する必要があります。次のコードで、スタック

class UserExistsOrNotViewController: UIViewController, UITabBarControllerDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     tabBarController?.delegate = self 
     // Do any additional setup after loading the view. 
    } 
    func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) { 
     viewController.viewDidAppear(true) 
     print("test") 
    } 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 
     let realm = try! Realm() 
     let openSearchItem = realm.objects(User).count 
     if openSearchItem == 0 { 
      performSegueWithIdentifier("notLoggedIn", sender: self) 
     } else { 
      performSegueWithIdentifier("loggedIn", sender: self) 
     } 

    } 

私がいる問題は、私がスタックから前のページをポップ、そしてそれは、このコードに戻ったら、セグエが行われていないことです。 viewWillAppearの下に置くと、ナビゲーションが壊れてしまいます。予期しない状態でのナビゲーション遷移を仕上げ

。 ナビゲーションバーのサブビューツリーが壊れている可能性があります)

私は今何をすべきか分かりません。私が探しているもの:navigationcontrollerからviewcontrollerをポップすると、上記のクラスは、ユーザーがログインしているかどうかを毎回チェックし、正しいページにセグをする必要があります。

答えて

0
あなたViewWillAppearが発射されている場合

が、ViewDidAppearではありません。 super.viewDidAppear(animated)が見つからないことを確認してください。こんにちは議論here

+0

を参照してください、私はそれを追加しましたが、それは、発射のために違いはありませんでした。しかし、私はtabBarControllerも持っています(上記のコードは最初のエントリポイントです) – SoundShock

+0

tabBarControllerのviewDidAppearをオーバーライドしましたか? –

+0

こんにちは、私はあなたの提案を実装しようとしましたが、それは私のために動作していないようです。コードを更新しました – SoundShock