【问题标题】:Set UINavigationController Title when presenting UIHostingController呈现 UIHostingController 时设置 UINavigationController Title
【发布时间】:2022-01-03 16:36:45
【问题描述】:

我有一个SwiftUI 视图,它被推送到UINavigationController 堆栈。我在 SwiftUI 中没有任何 NavigationView,我想显示标题文本。我怎样才能做到这一点?

如何创建我的控制器:

let viewModel = SettingsViewModel()
let settingsView = SettingsView().environmentObject(viewModel)
let controller = UIHostingController(rootView: settingsView)
controller.title = "Settings"
return UIHostingController(rootView: settingsView)

SwiftUI 里面有什么

struct SettingsView: View {

// MARK: - Properties
@EnvironmentObject var viewModel: SettingsViewModel

// MARK: - View
var body: some View {
    List(viewModel.settingItems) { item in
        Text(item.rawValue)
    }
}

}

【问题讨论】:

  • controller.title 不适合你吗?
  • 没有没用 :(

标签: ios swift swiftui uikit


【解决方案1】:

您将 settingsView 作为 rootviewcontroller 返回,它具有 viewModel 作为对象,但它是空的,就像您向第一个 let viewModel = SettingsViewModel() 声明的那样,所以下面的 List 有零项。

var body: some View {
List(viewModel.settingItems) { item in
    Text(item.rawValue)
 }
}

另一方面,您声明 controller 但它从未使用过

let controller = UIHostingController(rootView: settingsView)
controller.title = "Settings"

我对 swiftUI 的了解非常少,但您的问题一定是其中之一

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    相关资源
    最近更新 更多