2016-12-02 167 views
0

我知道有很多關於此的帖子,但我的問題有點不同。我有一個帶有多個視圖的選項卡欄控制器,其中一個視圖是登錄視圖,如果用戶登錄,它應該改變視圖以顯示用戶菜單。以編程方式更改視圖

在同一時間我需要保持選項卡欄菜單可見,所以我不能使用模式,因爲它將失去對選項卡欄控制器的引用。

所以我結束了使用導航控制器,我只是推入用戶菜單視圖到堆棧(不是最好的方式,但它的工作原理)。

問題是,如果用戶雙擊登錄欄,它將加載登錄視圖,我不希望發生這種情況。

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

好吧,我結束了檢查,如果導航控制器有一個以上的孩子(紅色字體),並刪除從導航數組中的第一個孩子,所以它可以釋放它,並只顯示我想要的一個。

override func viewWillAppear(_ animated: Bool) { 

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

我落得這樣做,這是因爲點擊標籤欄項目2X它會給我帶來給我就算了紅色的看法的原因已經推藍色視圖導航陣列。

相關問題