我的项目中有三个情节提要。有一个主要的和两个独立的工作流情节提要。每个情节提要板都嵌入其自己的导航控制器中。

由于将情节提要板分为工作流程,因此我必须以编程方式将每个工作流程添加到选项卡栏。这工作正常。

当我尝试将视图(工作流内)推入工作流导航控制器时,会发生我的问题。似乎从未使用过用于工作流的导航控制器。我通过更改每个工作流程的导航栏颜色来验证这一点。

我尝试了两个选项,每个选项都在工作流上设置。

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

将选项卡视图控制器设置为指向导航控制器(很确定这是不正确的,但这是我进行的测试)。这将显示所需的视图,但不显示导航项(后退按钮)。

ios - 如何使用单独的 Storyboard以编程方式正确设置UITabBarController-LMLPHP



选项2

将选项卡视图控制器设置为指向列表视图(请参见下面的屏幕截图)。这将显示后退按钮,但是在单击单元格时,最后的视图将显示在选项卡的“上方”。

ios - 如何使用单独的 Storyboard以编程方式正确设置UITabBarController-LMLPHP



主故事板
ios - 如何使用单独的 Storyboard以编程方式正确设置UITabBarController-LMLPHP

工作流程1故事板
ios - 如何使用单独的 Storyboard以编程方式正确设置UITabBarController-LMLPHP

工作流程2故事板
ios - 如何使用单独的 Storyboard以编程方式正确设置UITabBarController-LMLPHP

最佳答案

为了解决这个问题,我最终做了以下工作:


从工作流程中删除导航控制器
创建一个“ MockTabController”(只是一个UIViewController,其UITabBar放置在视图的底部)


现在,我有了一个带有UITabBar的UIViewController,我可以让每个工作流视图扩展该视图而不是UIViewController,因此选项卡栏在我的整个应用程序(我想要的位置)上都是一致的。

对于工作流具有UITableViewController的实例,我只是将UITableViewController嵌入到ViewController中作为子视图。然后,ViewController扩展了我的MockTabController,结果是一个带标签栏的TableViewController,不需要任何修改即可工作。

为了简化整个应用程序中的导航,我只需要将导航堆栈重置回Tab控制器的开头即可。单击选项卡栏项将展开所有工作流程,然后推动新工作流程的开始。

关于ios - 如何使用单独的 Storyboard以编程方式正确设置UITabBarController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41229897/

10-17 02:39