2017-10-02 6 views
0

にナビゲートすることができませんでしNavigationControllerは私のナビゲーションフローである:
ここ宛のViewController

VC1 - > VC2 - (ランディングページまたはメインページです)VC1で> V3


私はVC2で

問題をクリックし、ボタンスルーVC2に移動しセグエを使用しています:VC2で
NavigationController動作していない、それは文句を言わないtに移動します彼は指定されたUIViewControllerを対象としました。

VC2の場合、いくつかの条件が満たされた後にVCIでnavigationalControllerを使用してVC3に移動する必要があります。ここ

VC2のためのコード:

override func viewDidLoad() { 

     let defaults = UserDefaults.standard 

     if defaults.object(forKey: "SessionToken") == nil { 

     let VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentitfier: "VC3") as! VC3 


     self.dismiss(animated: true, completion: nil) 

     self.navigationController?.present(VC, animated: true) 


     } else { 

         //-- code for other task-- 

      } 

    } 

を更新:

override func viewDidAppear() { 

    let defaults = UserDefaults.standard 

    if defaults.object(forKey: "SessionToken") == nil { 

    let VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentitfier: "VC3") as! VC3 


    self.dismiss(animated: true, completion: nil) 

    self.navigationController?.present(VC, animated: true) 


    } else { 

        //-- code for other task-- 

     } 

} 



Override func viewDidLoad() { 

    super.viewDidLoad() 


here: I have code to setup calendar functions and others 


} 

助けてください。

おかげ

+0

を? –

+0

あなたは何をしたいですか? 'VC3'にプッシュするか' VC2'に表示しますか? –

+0

@Amir Khan、VC2の状態を確認した後、VC3にナビゲートしたいと思います。 self.dismissの有無にかかわらず(アニメーション:true、完了:なし)、まだナビゲートしません。 VC3は別のViewControllerです。条件が満たされない場合、私はVC2に滞在したいです。 – MilkBottle

答えて

1

このお試しください: ``あなたはself.dismiss(::真、完成ゼロアニメーション)書かれたのはなぜ

override func viewDidAppear(_ animated: Bool) { 

    super.viewDidAppear(animated) 

    let defaults = UserDefaults.standard 

    if defaults.object(forKey: "SessionToken") == nil { 


     let VC = self.storyboard?.instantiateViewController(withIdentifier: "VC3") as! VC3 

     self.present(VC, animated: true) { 

     } 


    } else { 

     //-- code for other task-- 

    } 
} 
+0

エラーメッセージ:ビューがウィンドウ階層にない<プロジェクト名>にVC3を表示しようとしました!なぜこれが表示されますか? – MilkBottle

+0

@MilkBottleは私の更新された答えをチェックします。これは 'viewDidLoad'メソッドに別の' viewcontroller'を提示しようとしていたためです。したがって、VC2が完全に読み込まれると、bodyを 'viewDidLoad'から' viewDidAppear'に移動する必要があります。 –

+0

私はviewDidAppear()にコードを移動しますが、最初にVC2ページを表示してからVC3にナビゲートします。条件が真であるときにVC2を表示しないでください - defaults.object(forKey: "SessionToken")== nil。あなたのソリューションのベース、viewDidAppearが最初に起動し、それが真であればすぐにVC3にナビゲートしますが、何とかVC3に移動する前にVC2を表示します。 – MilkBottle

関連する問題