2017-09-26 59 views
0

我想創建一個導航爲我的iPhone「選項卡式應用程序」,這將包括(顯然)UITabBarControllerSWRevealViewController揭示側菜單。隱藏UITabBarController的tabBarItem,雖然能夠顯示相關的視圖然而

所有在我的應用程序觀點必須有兩個UITabBarController顯示的UINavigationBar然而,這出現在左側的菜單鏈接(通過SWRevealViewController處理)不得出現在UITabBarController

我左側的菜單鏈接以這種方式處理:

import UIKit 

class MenuTableViewController: UITableViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.clearsSelectionOnViewWillAppear = false 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     let selectedIndex = (indexPath as NSIndexPath).row + 1 // hardcoded for time being 
     let tabBarController = revealViewController().frontViewController as! UITabBarController 

     let navController = tabBarController.viewControllers![selectedIndex] as! UINavigationController 
     navController.popToRootViewController(animated: true) 

     tabBarController.selectedIndex = selectedIndex 
     revealViewController().pushFrontViewController(tabBarController, animated: false) 
    } 
} 

現在,我試圖刪除的鏈接的,我不希望在我的UITabBarController顯示如下意見之一:

import UIKit 

class TabBarController: UITabBarController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     let index = 2 // hardcoded for time being 
     viewControllers?.remove(at: index) 
    } 
} 

,但如果我點擊現在相關的左側菜單中的鏈接,我得到一個NSRangeException index 2 beyond bounds [0 .. 1]錯誤(當然,因爲我刪除從UITabBarController特定tabBarItem)。

我的問題是:如何從UITabBarController「隱藏」該項目,但仍然可以從我的側邊菜單中引用它(並打開它)?

UPDATE
我此刻的故事板看起來像這樣:enter image description here

+0

所以......你有''A' B''C'選項卡的標籤欄控制器......當前標籤是'B' ......你也有一個菜單列出'D''E''F''G' ...用戶點擊菜單上的'E' ...應該發生什麼?當前標籤'B'由* E替換*或者「A-B-C」標籤變成「A-B-C-E」? – DonMag

+0

假設我有'A'' B'''''''''''觀點。我只想在我的側欄菜單中顯示'A''B'' C'和'D'' E'。但是,'D'和'E'應該在打開TabBar後纔可見。在我的故事板中,所有視圖都與我的TabBar控制器相連,這樣TabBar就可以看到它們,也許這是第一位的錯誤方法? – errata

回答

1

它可能不是使用「菜單」操縱標籤是一個好主意 - 那就是蘋果公司設計了更多...和「編輯...」功能。

根據您的整體設計/導航/用戶體驗流程中,兩個合理的選擇應該是:

  1. 而是一個「取消」或替換當前選中的標籤,.present一個模式視圖控制器,的「保存「或」完成「按鈕.dismiss它(無論是合適的)。

  2. 自從你狀態的每個選項卡的視圖控制器是一個NavigationController,可以.push菜單選擇視圖控制器到當前堆棧。然後你的界面可以使用標準的「<返回」按鈕導航。

好運:)

+0

太棒了!謝謝澄清! – errata