首页 > 解决方案 > 带有 SwiftUI 视图的 UIKit TabBar

问题描述

我正在更新我现有的 UIKit 以在某些部分使用 SwiftUI,我觉得能够用 SwiftUI 替换所有这些部分很舒服。它是一个选项卡应用程序,因此有 3 个选项卡,其中一个是设置,我将其替换为 SwiftUI。我的标签栏被配置为只显示图像而不显示标题(我需要帮助的问题也会出现在显示的标签上)。现在在 UIKit 我这样做:

private let settingsViewController: UIViewController = UIHostingController<SettingsView>(SettingsView())

稍后在展示之前:

settingsViewController.navigationItem.title = "Settings".

然而,从那时起,SwiftUI 开始使用它的 view modifier: .navigationBarTitle("Text"),我将它用于嵌套视图控制器(通过 推送NavigationLink),因为 UIKit 无法访问这些视图来设置标题。然而,问题是,无论何时.navigationBarTitle使用(与title在 UIKit 中设置视图的属性相同,它都会设置当前选项卡栏项目的标题。对于 UIKit,总有一种方法可以设置navigationItem.title而不是title.

有没有办法在 SwiftUI 中设置导航栏标题而不是标签栏标题本身?

谢谢

标签: swiftswiftuiuikit

解决方案


这是iOS中的一个错误。请向 Apple 提交错误报告。

我刚刚发现了解决此问题的方法

创建一个自定义子类UINavigationController并将其用作包含您的settingsViewController.

class WorkaroundUINavigationController: UINavigationController {
    override var title: String? {
       get { tabBarItem.title }
       set { navigationItem.title = newValue }
    }
}

推荐阅读