【问题标题】:How to make tabbar navigate between webpages with one wkwebview?如何使用一个 wkwebview 使标签栏在网页之间导航?
【发布时间】:2017-07-06 18:54:10
【问题描述】:

我使用wkwebview 来渲染网页,我有三个网页。我想使用标签栏在这三个页面之间导航。我觉得每个wkwebview 一个页面可能会占用太多资源。

所以我只想使用一个wkwebview 来加载三页。触摸选项卡时,网页页面已加载。即当tab1点击时,page1加载,tab2点击,page2加载,tab3和page3相同。现在我可以使用wkwebview 加载一个页面,我是 ios 新手。

如果tabbar不能实现这个,我该怎么办?

【问题讨论】:

  • 我认为您必须为此提供 3 个 url 并使用一个 webview 而无需来回切换它不太可能。
  • @AliFarhan 在历史中来回导航。由于每个页面都有内部链接,因此导航可能不适用于三个不同的页面。
  • @AliFarhan 我在 android 中实现了这个。使用标签栏,我可以浏览三个不同的页面。并且使用后退按钮,我可以在历史记录中导航。我只想在 ios 中实现它。但是发现这对我来说并不容易,假设我是IOS编程的新手。

标签: ios swift3 navigation wkwebview tabbar


【解决方案1】:

如果您想要类似的内容,请在您的 ViewController 中添加带有 3 个 tabitem 的 UITabbar,然后使用您的 ViewController 设置它的委托。现在实现UITabbardidSelect item方法,根据tab加载url。

func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    switch item.title! {
    case "First":
        self.webView.load(URLRequest(url: url1))
    case "Second":
        self.webView.load(URLRequest(url: url2))
    default:
        self.webView.load(URLRequest(url: url3))
    }
}

【讨论】:

  • 如果您不明白,请随时提出问题。
【解决方案2】:

您可以覆盖方法handleNavBackButton() 以获取返回按钮的回调。

override func handleNavBackButton() {
  if webViewData.canGoBack {
    webViewData.goBack()
  } else {
    _ = self.navigationController?.popViewController(animated: true)
  }
}

如果它适合你,请告诉我:)

【讨论】:

  • 谢谢,我的意思是当我触摸 tab1 时页面 1 已加载,tab2 页面 2 已加载,而不是返回或转发历史记录。
【解决方案3】:

如果你不使用两个不同的场景,你需要使用 UIViewController + UIToolbar 的组合。将您的两个 UIBarButtonItem(s) 添加到您的工具栏。将他们的操作设置为所需的 url,你就完成了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多