簡體   English   中英

在應用程序的所有視圖控制器上顯示選項卡欄

[英]Show tab bar on all view controllers of application

我有一個問題,我在標簽欄控制器上有2個視圖控制器。 這兩個控制器都顯示標簽。 但是當我從View控制器1到View控制器3進行推送時,視圖控制器3沒有顯示標簽欄。

我想在我的應用程序的所有控制器上顯示選項卡。 我的情況

更改故事板設計:

  • 將TabBar View Controller設置為初始ViewController

  • 將UINavigationViewController設置為每個Tab的根視圖控制器

  • 畢竟,您的設計結構看起來像提到Image

在此輸入圖像描述

您的問題存在是因為您的UITabViewController嵌入在初始化為初始控制器的導航堆棧中。

您必須重新構建內容,以便標簽欄控制器選項卡打開到新的導航堆棧。

  • 刪除第一個UINavigationController ,你不需要它(如果你不想使用push segue,請使用模態segue,然后你就不會從UITabViewController里面回到那個UINavigationController的viewController堆棧了。
  • UITabViewController每個第一個UIViewControllers嵌入到單獨的UINavigationController

現在,您可以在UITabViewController's選項卡中推送segue

你應該意識到你的觀點結構。

現在,您首先擁有一個NavigationController,其rootViewController是一個Tab BarController。

NavigationController[0] = TabBarController

你的TabBarController有2個ViewController(控制器1和控制器2)

NavigationController[0] = TabBarController

然后它包括2個控制器

TabBarController[0] = Controller 1

TabBarController[1] = Controller 2

你打電話時

self.navigationController.pushViewController

這意味着NavigationController推送到Controller 3,因此控制器3不會顯示標簽欄,因為它不在TabBarController中。

如果你想推送到控制器3並且仍然有標簽欄,你可以在Controller 1中插入一個容器(或插入一個View),並創建一個這樣的NavigationController

let nav = NavigationController(rootViewController: yourController1)
self.yourViewInsertedInController1.addSubview(nav.view)

然后在yourController1中運行

self.navigationController.pushViewController

這是對的。

要將視圖控制器添加到選項卡欄控制器的視圖控制器陣列,請從標簽欄控制器拖動到該視圖控制器,同時按住Control鍵。 從出現的菜單中選擇Relationship Segue> view controllers。

暫無
暫無

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

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