带有 SwiftUI 视图的 UIKit TabBar

Jan*_*ner 6 uikit swift swiftui

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

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

稍后在显示之前:

settingsViewController.navigationItem.title = "Settings".

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

有什么方法可以在 SwiftUI 中设置导航栏标题而不是标签栏标题本身?

谢谢

fun*_*len 5

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

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

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

class WorkaroundUINavigationController: UINavigationController {
    override var title: String? {
       get { tabBarItem.title }
       set { navigationItem.title = newValue }
    }
}
Run Code Online (Sandbox Code Playgroud)