簡體   English   中英

我的標簽欄控制器在推送后消失了

[英]My Tab bar controller disappears after a push segue

這是我的應用程序的設置:

導航-

-loginVC-如果登錄有效,則將segue推送至-

    tab bar controller with 3 tabs:
      -in the first tab, is a profile display which modal pushes to a profile editor(not
       issue here)
      -second tab is a searchVC that pushes to a tableVC that shows results. This is  
       where the tab bar disappears
      -The third view is just a VC for updating the database this is linked to.

從字面上看,這就是情節提要上的工作方式,並且我已經確保從searchVC到tableVC的序列是推送序列。

如何防止選項卡欄控制器在第二個視圖上消失。

結構應為

loginViewController -->modal segue--> tabBarController
                                        |
                                        |
                                        |-->NavController->Item1ViewController
                                        |
                                        |-->NavController->Item2ViewController
                                        |
                                        |-->NavController->Item3ViewController

此刻,當您從項目2的第一個viewController推入時,第二個選項卡項上的“推”將整個選項卡欄控制器推開。

如果要在loginViewController上導航欄(為了保持一致性),請將其嵌入到其自己的navigationController中,但請確保不要從那里推入: modal或使用[self presentViewController:tabBarViewController animated:yes completion:nil]呈現

每個選項卡欄項的導航控制器都是可選的(取決於您要執行的導航,顯然您確實希望對項2導航)-但為了保持一致性,可能希望對每個項進行導航。

更新
@rdelmar建議將登錄屏幕用作根視圖控制器的這種方法(在其頂部以“模式”方式呈現應用程序的其余部分)是對模式選擇的濫用,並建議在第一個模式中以模式方式顯示登錄屏幕標簽項。 我理解這一點,並將對此進行更多的思考,但同樣,我也發現替代方法有些不舒服...選項卡項目在tabVC中應具有相同的權重-因此,使第一個項目成為整個應用程序所依賴的模式登錄控制器感覺不像很好的程序流程。 如果應用程序要求用戶登錄,那么以某種方式支持它的登錄名不會出現任何問題。

我在這里的答案中有對此的更完整描述的版本:( 如何處理UINavigationControllers和UITabBarControllers iOS 6.1 )。 這還有一個優勢,即如果您從應用程序中的任何位置提供注銷按鈕,則可以輕松退回到第一個登錄屏幕-有效地取消顯示整個已登錄的應用程序堆棧-可以很好地工作。

一個不同的解決方案(與@rdelmar相似)是, 如果不在選項卡欄控制器中,則從第一個viewController模態顯示登錄屏幕。 這可以在我前面提到的答案中起作用,因為登錄后的第一個屏幕是navController嵌入的viewController。 但是,退出注銷並不是那么干凈。

最后,我懷疑這可能只是風格的一個問題,只要流程邏輯保持健壯,我們就不要太掛了。

除非您有其他未提及的導航控制器,否則您的推送來自作為初始控制器的導航控制器。 因此,從中推動,將tableVC放在導航控制器的視圖控制器中的標簽欄控制器的頂部。

我建議您將選項卡欄控制器設置為窗口的根視圖控制器。 在第一個選項卡中(從其viewDidAppear方法中)從控制器以模態方式顯示loginVC,以便在應用程序啟動時首先顯示。 第二個選項卡應將導航控制器作為其根控制器,並將searchVC作為導航控制器的根視圖控制器。

暫無
暫無

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

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