我有一个UIHostingController,它承载一个名为CatalogView的SwiftUI视图。在显示它时,附加了一个环境对象,因此基本上从UIKit中可以看到如下所示:
let rootCatalogView = CatalogView()
let appState = AppState.get()
let catalogView = UIHostingController(rootView: rootCatalogView.environmentObject(appState))
navigationController.pushViewController(catalogV
我用SwiftUI创建了一个应用程序。
视图是结构体,但我需要知道视图控制器,因为需要它来呈现一些特殊的警报。
我看到在我的项目中有AppDelegate和SceneDelegate。
我发现了这个
let contentView = ContentView()
// Use a UIHostingController as window root view controller.
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowSc
如果视图层次结构设置正确,则SwiftUI的EnvironmentObject和EnvironmentValues应该传播到子视图--对于纯SwiftUI视图层次结构的情况,这似乎是正确的。如果父视图控制器确实包含其子视图(例如,UITabViewController、UINavigationController、.),则与UIKit混合的情况也是如此。
但是,在UIKit视图层次结构上以模式方式呈现的SwiftUI视图控制器并不能从其父层获取环境。这是我的设备。
// ContentView
struct ContentView: View {
var body: some Vie
因此,使用UIHostingController从旧视图控制器打开swiftUI视图。去做一些编辑在比如说花式迅捷界面,然后当我解散迅捷视图想把编辑后的值传回原来的视图控制器。
我可以得到的价值转移到迅捷的看法,但考虑如何得到它回来?寻找快速前进的方向。是协议还是可观察的。正确的方法是什么?
把价值从VC传递给SwiftUI说:但是还能得到价值吗??
var selectedValue:String = "this is the selected text to edit"
let swiftUIView = swiftUIEditView(valueSelected: se