swift - 带有 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 中设置导航栏标题而不是标签栏标题本身?
谢谢
解决方案
这是iOS中的一个错误。请向 Apple 提交错误报告。
我刚刚发现了解决此问题的方法:
创建一个自定义子类UINavigationController
并将其用作包含您的settingsViewController
.
class WorkaroundUINavigationController: UINavigationController {
override var title: String? {
get { tabBarItem.title }
set { navigationItem.title = newValue }
}
}
推荐阅读
- c++ - 在 2D Array C++ 中存储特定文件的单词
- c# - 为什么要使用绑定和依赖属性?
- android - Android TextView 对齐文本不适用于 SelectableText
- zendesk-api - 使用 Zendesk API 向元数据添加标志
- javascript - 无法从 JSON 数据访问嵌套对象
- c++ - OpenCV FAST 算法仅在图像的一部分上创建倾斜的关键点
- sql - ADFS 与 SQL 数据库之间连接的 ADFS 运行状况检查
- javascript - 如何从 mapbox gl js 返回的 queryRenderedFeatures 中获取地名?
- istio - 为什么 istio 的 maxRequestPerConnection 对 http/1.1 请求有影响?
- google-apps-script - 如何根据其他单元格的状况让一个单元格与另一个单元格相等?