簡體   English   中英

使用 Segue 返回到 TabBarController 的初始 ViewController 后,TabBar 被隱藏

[英]TabBar is hidden after going back to the initial ViewController of a TabBarController Using Segue

我有一個帶有三個表視圖控制器的標簽欄控制器,第二個 VC 嵌入在導航控制器中。 在第二個 VC 中,我使用這一行self.tabBarController?.tabBar.isHidden = true隱藏了 tabBar,並且我創建了一個欄按鈕以返回到第一個視圖控制器,它是使用 segue 和模式演示的“home”VC。

我的故事板的屏幕截圖

我的問題是在點擊后退按鈕並從第二個 VC 返回主 VC 后,即使我將self.tabBarController?.tabBar.isHidden = false放在主 VC 的 viewWillAppear 方法和第二個 VC 的 viewWillDisappear 方法中,tabBar 仍然隱藏.

這是我預期的結果與我得到的結果

預期的家庭 VC

結果家庭VC

如何讓標簽欄顯示?

當您使用模態演示segue 時,您正在創建一個全新的HomeViewController 實例。 新的 HomeViewController 未鏈接到層次結構中的 TabBarController。

這是您的初始視圖層次結構:

TabBarController
 -> HomeVC
 -> CreateVC (Navigation Controller)
    -> CreateQuizVC
 -> SavedVC

現在點擊后退按鈕后,您將獲得以下信息:

TabBarController
 -> HomeVC
 -> CreateVC (Navigation Controller)
   -> CreateQuizVC
     -> HomeVC(2)
 -> SavedVC

您可以做的是,不要使用 segue 返回,而是在代碼中添加一個 IBAction 以編程方式設置 TabBar 的 selectedIndex,並將 Back UIBarButtonItem 鏈接到此 IBAction。

@IBAction func backButtonAction(_ backButton: UIBarButtonItem) {
    // Keep in mind that the CreateQuizVC is embeded in a NavigationController.
    // The NavigationController is the child of the TabBarController
    navigationController?.tabBarController?.selectedIndex = 0
    navigationController?.tabBarController?.tabBar.isHidden = false
}

但是,我的建議是您按照 Apple 的意圖使用 TabBar。 在展示 CreateQuizVC 時不要隱藏它,並使用 TabBar 在選項卡之間導航。 這將有助於用戶體驗,因為 iOS 上的每個人都期待 TabBar 的這種行為。

暫無
暫無

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

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