【问题标题】:Xcode 9 : Navigation item title of UIWebView is loaded after WebView is loadedXcode 9:加载WebView后加载UIWebView的导航项标题
【发布时间】:2018-09-19 14:17:27
【问题描述】:

我正在 WebView 中加载一些 URL 内容。 导航项的标题设置为网页视图标题(参考下面的代码):

extension WebPageView: WKNavigationDelegate {

    func webView(_: WKWebView, didFinish _: WKNavigation!) {
        loader?.hide()
        navigationItem.title = webView?.title
    }

    . . .
}

但是,这样做的问题是 在设置导航项的标题后加载网页视图的内容(报告为错误)。

有没有什么方法可以设置导航项的标题,然后加载网页视图内容?

【问题讨论】:

  • @PrashantTukadiya:你能澄清一下这有什么帮助吗?
  • 您的订单需要在页面加载前看到标题吗?
  • @AndrewRomanov :这被报告为错误。所以我需要找出一个解决方案,首先设置标题,然后设置 WebView 内容,或者两者可以同时设置。
  • @AndrewRomanov : VinayKrishnan 的帖子是我所期望的。

标签: ios swift xcode uiwebview uiwebviewdelegate


【解决方案1】:

您的问题“有没有办法设置导航项的标题,然后应该加载 Web 视图内容?”的答案?否,这似乎是不可能的,因为一旦完全加载了 web 内容,就会检索 webview 的“标题”。 不过

var title: String? { get }

WKWebView 类与此属性的键值观察 (KVO) 兼容。

您可以将观察者添加到 webview 以获取与加载请求并行的关键“标题”。

webView.load(myRequest())
webView.addObserver(self, forKeyPath: "title", options: .new, context: &myContext)

更多参考 https://gist.github.com/fahied/698e6f3a09d898b0020d1d4775ffef93

【讨论】:

  • 但是使用它会引发警告消息:基于块的 KVO 违规 - 使用 Swift 3.2 或更高版本时,更喜欢带有键路径的新的基于块的 KVO API。
  • swift 3.2的语法有变化,请查看这个例子github.com/aguilarpgc/KVO
猜你喜欢
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-18
  • 2015-12-19
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多