【问题标题】:UITabBar containing SwiftUI View包含 SwiftUI 视图的 UITabBar
【发布时间】:2020-10-21 01:03:24
【问题描述】:

我有以下系列的控制器和视图。但是,当我在 MoreView 上使用导航链接时,它会更改 tabBarItem.title 的值。例如,它会说更多,但是当单击隐私策略按钮并将用户导航到策略视图时,标签栏中的标题将更改为 .navigationBarTitle() 中的任何内容,或者如果未提供,则为空字符串!我该如何避免这种情况?我希望标签栏标题是静态的

UITabBar -> UINavigationController -> MoreViewController(UIHostingController) -> MoreView(SwiftUI)

更多查看

List {
            
            Section(
                header: Text("ABOUT"),
                footer: Text(aboutFooter)
                        .font(.caption)
                ) {
                    NavigationLink(destination: WebView(
                        request: URLRequest(url: URL(string: "https://www.websitepolicies.com/policies/view/ng0sNvAJ")!)
                        )//.navigationBarTitle(Text("Privacy Policy"))
                    ) {
                        Text("Privacy Policy")
                    }
                    Text("Attribution")
            }
        }
        .listStyle(GroupedListStyle())
        .environment(\.horizontalSizeClass, .regular)

【问题讨论】:

  • 我也有同样的问题!
  • @funkenstrahlen 我在 Xcode 12 beta 2 中没有这个问题,最迟应该在秋季修复
  • @AustinE 它又回到了最终版本:(

标签: swift swiftui uitabbarcontroller uihostingcontroller


【解决方案1】:

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

我刚刚发现a workaround for this issue

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

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

【讨论】:

  • 我在使用自定义 MoreViewController 时遇到了同样的情况。无论我做什么,这个解决方案似乎都会导致 getter 和 setter 之间出现循环。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 2019-10-19
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 2014-08-07
相关资源
最近更新 更多