2016-12-02 11 views
0

私はそこに多くの投稿があることを知っていますが、私の問題は少し異なります。私は複数のビューを持つTab Bar Controllerを持っており、ビューの1つはログインビューです。ユーザーがログインすると、ユーザーメニューを表示するためにビューを変更する必要があります。プログラムでビューを変更する

同時に、タブバーメニューを表示したままにする必要があります。そのため、タブバーコントローラーへの参照が緩くなるため、モーダルを使用できません。

だから、私はちょうど私がユーザーのメニュービューをスタックにプッシュする(最高の方法ではないが動作する)ナビゲーションコントローラを使用して終了しました。

問題は、ユーザーがログインバーをダブルクリックすると、ログインビューが読み込まれ、これが起こりたくないということです。この例では

enter image description here

ユーザーがログインボタンをクリックした場合、それはブルービューに移動しますが、タブバーメニューの機能ボタン上のユーザーをダブルクリックした場合、それは赤になりますビュー。

私のソリューションはうまくいかないので、どうすれば私が望むものを達成できますか?ユーザがログインボタンを押すと、彼はログアウトボタンを押すまでブルービューのみを表示します。

[編集]ここで

は青いビューを表示するためのコードです:

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 

let ViewController = storyBoard.instantiateViewController(withIdentifier: "userViewID") as! UserViewController 
        self.navigationController?.pushViewController(ViewController, animated: true) 

答えて

1

私はナビゲーションコントローラ(赤1のために)複数の子を持っていたかどうかをチェックし、削除してしまった[OK]をナビゲーション配列の最初の子を削除して、必要なものだけを表示することができます。

override func viewWillAppear(_ animated: Bool) { 

     if((self.navigationController?.viewControllers.count)! > 1) 
     { 
      self.navigationController?.viewControllers.removeFirst() 
     } 
    } 

私はすでにナビゲーションアレイへの青いビューをプッシュしていた場合でも、それは赤のビューに私をもたらすだろうタブバー項目を2倍をクリックするので、私はこれをしてやってしまった理由。

関連する問題