我想要创建的功能是 ESPN 应用程序在您单击其中一个警报时执行的操作...它会加载应用程序,但不是格式化视图,而是在应用程序上加载可以点击的 Safari 视图(老实说,我讨厌这种情况,但在这样的情况下它会很好用。)
当前代码供参考
Button(action: {
openURL(URL(string: "linkhere")!)
}) {
Image("LISTENMENU")
}
我是否需要设置另一个视图并自己构建 webkitview 或者可以通过其他方式指定此功能? (也许通过修改 openURL 字符串
您需要将 SFSafariViewController(来自 UIKit)包装到 SwiftUI 中,因为目前无法在本机执行此操作。您应该使用 UIViewControllerRepresentable 来执行此操作。
import SwiftUI
import SafariServices
struct MyView: View {
@State var showStackoverflow:Bool = false
var body: some View {
Button(action: { self.showStackoverflow = true }) {
Text("Open stackoverflow")
}
.sheet(isPresented: self.$showStackoverflow) {
SFSafariViewWrapper(url: URL(string: "https://stackoverflow.com")!)
}
}
}
struct SFSafariViewWrapper: UIViewControllerRepresentable {
let url: URL
func makeUIViewController(context: UIViewControllerRepresentableContext<Self>) -> SFSafariViewController {
return SFSafariViewController(url: url)
}
func updateUIViewController(_ uiViewController: SFSafariViewController, context: UIViewControllerRepresentableContext<SFSafariViewWrapper>) {
return
}
}
如果你想用简单的方法来做。这也适用于 SwiftUI。
UIApplication.shared.open(URL(string: "https://www.google.com")!)