我是 IOS 编程和 SwiftUI 的新手。来自 Java/Kotlin Android。我想学习 SwiftUI。我有一个 WKWebView。我想根据 WKWebView 中的 url 更改来更改 SwiftUI 页面。我已经做了很多工作,如下所示。但是我在导航方面很挣扎。
struct ContentView: View, Listener {
func onFetched() {
NavigationLink(destination: MainView()) {/* HERE this is not working.
App never goes to MainView.swift page.*/
Text("Show Detail View")
}
}
var body: some View {
NavigationView {
VStack {
WebView(authListener: self)
}.navigationBarTitle(Text("PEAKUP Velocity"))
}
}
}
struct WebView: UIViewRepresentable {
var listener: Listener
@ObservedObject var observe = observable()
func makeUIView(context: Context) -> WKWebView {
return WKWebView()
}
func updateUIView(_ uiView: WKWebView, context: Context) {
observe.observation = uiView.observe(\WKWebView.url, options: .new) { view, change in
if let url = view.url {
self.observe.loggedIn = true // We loaded the page
self.listener.onFetched()
uiView.isHidden = true
}
}
uiView.load("https://google.com")
}
}
protocol Listener {
func onFetched()
}
更新:我在 onFetched() 中试过这个:
NavigationLink(destination: MainView()) { Text("") }''''
And I tried this piece of code:
NavigationView {
NavigationLink(destination: SecondView()){
Text("Navigation Link")
}
}
更新 2:我也在 onFetched 中尝试了这段代码:
self.presentation(Model(MainView(), onDismiss: nil))
更新3:我试过这个:
self.sheet(isPresented: $sayHello) {
MainView()
}