【问题标题】:UIKit TabBar with SwiftUI View带有 SwiftUI 视图的 UIKit TabBar
【发布时间】:2020-10-19 18:38:42
【问题描述】:

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

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

在展示之前:

settingsViewController.navigationItem.title = "Settings".

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

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

谢谢

【问题讨论】:

  • 我有同样的问题,可以重现这个!

标签: swift swiftui uikit


【解决方案1】:

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

我刚刚发现a workaround for this issue

创建UINavigationController 的自定义子类并将其用作包含您的settingsViewController 的导航控制器。

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

【讨论】:

    猜你喜欢
    • 2022-07-11
    • 2021-03-21
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 2021-05-02
    • 2021-06-21
    • 1970-01-01
    相关资源
    最近更新 更多