![](/img/trans.png)
[英]How to set the subclass of a TableView that was created programmatically? (no storyboards)
[英]How to properly set up UITabBarController programmatically with separate storyboards
我的項目中有三個情節提要。 有一個主要的和兩個獨立的工作流情節提要。 每個情節提要板都嵌入其自己的導航控制器中。
由於將情節提要板分為工作流程,因此我必須以編程方式將每個工作流程添加到選項卡欄。 這工作正常。
當我嘗試將視圖(工作流內)推入工作流導航控制器時,會發生我的問題。 似乎從未使用過用於工作流的導航控制器。 我通過更改每個工作流程的導航欄顏色來驗證了這一點。
我嘗試了兩個選項,每個選項都在工作流上設置。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let mainStoryboard = UIStoryboard(name: "Workflow 1", bundle: nil)
let actionItemStoryboard = UIStoryboard(name: "Workflow 2", bundle: nil)
let workflow1Controller = mainStoryboard.instantiateViewController(withIdentifier: "navigationController1")
let workflow1TabItem = UITabBarItem(title: "Item 1", image: nil, selectedImage: nil)
workflow1Controller.tabBarItem = workflow1TabItem
let workflow2Controller = actionItemStoryboard.instantiateViewController(withIdentifier: "workflow2")
let workflow2TabItem = UITabBarItem(title: "Item 2", image: nil, selectedImage: nil)
workflow2Controller.tabBarItem = workflow2TabItem
self.viewControllers = [workflow1Controller, workflow2Controller]
}
選項1
將選項卡視圖控制器設置為指向導航控制器(很確定這是不正確的,但是我進行了測試)。 這將顯示我想要的視圖,但不顯示導航項(后退按鈕)。
選項2
將選項卡視圖控制器設置為指向列表視圖(請參見下面的屏幕截圖)。 這將顯示后退按鈕,但是在單擊單元格時,最后的視圖將顯示在選項卡的“上方”。
為了解決這個問題,我最終做了以下工作:
現在,我有了一個帶有UITabBar的UIViewController,我可以讓每個工作流視圖擴展該視圖而不是UIViewController,因此選項卡欄在我的整個應用程序(我想要的位置)上都是一致的。
對於工作流具有UITableViewController的實例,我只是將UITableViewController嵌入到ViewController中作為子視圖。 然后,ViewController擴展了我的MockTabController,結果是一個帶標簽欄的TableViewController,不需要任何修改即可工作。
為了簡化整個應用程序中的導航,我只需要將導航堆棧重置回Tab控制器的開頭即可。 單擊選項卡欄項將展開所有工作流程,然后推動新工作流程的開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.