簡體   English   中英

當我從另一個視圖選擇回到視圖時,TabBarController消失了

[英]TabBarController disappears when I segue back to the view from another view

我有一個嵌入在導航控制器中的viewController。 然后將此導航控制器嵌入到選項卡欄控制器中。

我有另一個不應從tabBarController訪問的viewController。 它只能使用按鈕從第一個viewController訪問。 在secondViewController中,我制作了一個UIBarButtonItem移回原始視圖。 從第一個視圖到第二個視圖,反之亦然,我使用情節提要參考來在視圖之間來回移動。

但是,當我從第一個視圖移動到第二個視圖時,選項卡欄控制器消失了(應該如此)。 當我回到第一個視圖時,選項卡欄控制器消失,並且無法再在選項卡之間移動。

我試過包括:

self.hidesBottomBarWhenPushed = false

在第一個視圖上

self.hidesBottomBarWhenPushed = true

在第二個觀點

似乎沒有任何效果。 每當我從第二個視圖移動到第一個視圖時,選項卡欄控制器就會消失。

您遵循的是錯誤的層次結構。 您實際上是在使用海賊來回走動。 每次您嘗試返回第一個控制器時,都會創建一個新實例。

讓我們說清楚:

您需要遵循以下方法:

1您有兩個控制器A和B。

2在控制器A的viewDidLoad或viewWillAppear中使用self.hidesBottomBarWhenPushed = true。

3控制器A嵌入在導航控制器中,該控制器進一步嵌入在UITabBarController中。

點擊控制器A中的按鈕,您需要按入控制器B。因此,您可以為此使用segue或以編程方式執行此操作,例如:

let controllerB = B()
A.navigationController?.pushViewController(controllerB, animated: true)

4在水龍頭UIBarButtonItem上返回至控制器A。 因此,您在UIBarButtonItem動作中的代碼應類似於:

self.navigationController?.popViewController(animated: true)

請記住,您不應該搜尋返回上一個控制器。

你應該使用

 override func viewWillDisappear(_ animated: Bool) {
    self.tabBarController?.tabBar.isHidden = false
}

在放置后退按鈕的那個控制器中,我正在其中一個應用程序中使用確切的場景。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM