gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:49:11 26 4
gpt4 key购买 nike

我的项目中有三个 Storyboard。有一个主工作流程 Storyboard和两个独立的工作流程 Storyboard。每个 Storyboard都嵌入在自己的导航 Controller 中。

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

当我尝试将 View (工作流内)推送到工作流导航 Controller 时,出现问题。工作流的导航 Controller 似乎从未被使用过。我通过更改每个工作流程的导航栏颜色来验证这一点。

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

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

将选项卡 View Controller 设置为指向导航 Controller (很确定这是不正确的,但这是我所做的测试)。这会按照我想要的方式显示 View ,但不会显示导航项(后退按钮)。

Error pushing navigation controller

<小时/>

选项 2

将选项卡 View Controller 设置为指向 ListView (请参见下面的屏幕截图)。这将显示后退按钮,但单击单元格后,最后一个 View 将显示在选项卡“上方”。

Error pushing list view

<小时/>

主要 Storyboard enter image description here

工作流程 1 Storyboard Workflow 1 Storyboard

工作流程 2 Storyboard Workflow 2 Storyboard

最佳答案

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

  • 从工作流程中删除导航 Controller
  • 创建一个“MockTabController”(只是一个 UIViewController,并将 UITabBar 放置在 View 底部)

现在我有了一个带有 UITabBar 的 UIViewController,我可以让每个工作流 View 扩展此 View 而不是 UIViewController,因此选项卡栏在我的应用程序中保持一致(我想要的地方)。

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

为了简化整个应用程序的导航,我只需将导航堆栈重置回选项卡 Controller 的开头。单击选项卡栏项目将展开所有工作流程,然后插入新工作流程的开始。

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com