gpt4 book ai didi

ios - WKWebView 不显示导航栏

转载 作者:行者123 更新时间:2023-12-01 21:48:41 27 4
gpt4 key购买 nike

我在 SwiftUI 中有一个显示 WKWebView 的 View 使用 UIViewControllerRepresentable 传递给主 ContentView类,按照 Paul Huson's 'Creating a simple browser with WKWebView 中的说明实现.但是,当我在模拟器中加载应用程序时,似乎没有导航栏。

这是我的代码:
ContentViewBrowserView

struct ContentView: View {

let browserView = BrowserView()
var body: some View {
browserView
}
}

struct BrowserView: UIViewControllerRepresentable {

func makeUIViewController(context: UIViewControllerRepresentableContext<BrowserView>) -> WKBrowser {
let browser = WKBrowser()
return browser
}

func updateUIViewController(_ uiViewController: WKBrowser, context: UIViewControllerRepresentableContext<BrowserView>) {
// Empty
}

}
WKBrowser类(class)
class WKBrowser: UIViewController, WKNavigationDelegate {

var webView: WKWebView!

var webURL = URL(string: "https://www.hackingwithswift.com")!

override func loadView() {
webView = WKWebView()
webView?.navigationDelegate = self
self.view = webView
}

override func viewDidLoad() {
super.viewDidLoad()
webView.load(URLRequest(url: webURL))
}
}

结果:

The WKWebView

与教程中具有导航栏的 WKWebView 相比,如下所示:

enter image description here

为了确保出现导航栏,我必须添加或编辑什么?

2020 年 5 月 19 日编辑:

我想通过 navigationItem.rightBarItem 向导航栏添加项目函数,添加到 viewDidLoad ,像这样:
override func viewDidLoad() {
super.viewDidLoad()
webView.load(URLRequest(url: webURL))
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Open", style: .plain, target: self, action: #selector(someFunction)
}

@objc func someFunction(){
// Do something
}

理想情况下,结果类似于 SFSafariViewController :

enter image description here

但是当我包装 UIViewRepresentable NavigationView 中的类,这些项目不会添加到出现的导航栏中,而是我得到了这个:

enter image description here

最佳答案

如果你想在 UIKit 部分使用导航栏,那么你需要将你的 UIKit 浏览器包装在 UINavigationController 中。 ,如下所示

使用 Xcode 11.4/iOS 13.4 测试

demo

struct BrowserView: UIViewControllerRepresentable {

func makeUIViewController(context: Context) -> UINavigationController {
let browser = WKBrowser()
return UINavigationController(rootViewController: browser)
}

func updateUIViewController(_ uiViewController: UINavigationController, context: Context) {
// Empty
}

}

关于ios - WKWebView 不显示导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61881874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com