ViewController 总是加载相同的链接

Posted

技术标签:

【中文标题】ViewController 总是加载相同的链接【英文标题】:ViewController is loading always the same link 【发布时间】:2019-01-16 22:15:50 【问题描述】:

我是 swift 和 ios 的新手。视图控制器始终启动相同的链接,并且不显示带有第二个场景中的按钮的网格菜单。我在这里做错了什么? 我在 main.storyboard 三个场景中。

在第一个场景中是导航。第二个场景是一个带有按钮的网格菜单,根据按钮单击将在位于第三个场景的 web 视图中打开一个链接。第三个场景包括一个视图,该视图应根据具体情况打开特定链接在第 2 步中的点击按钮上

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate 

    var webView :  WKWebView!
    var webi:String =  "https://www.google.al"

    override func viewDidLoad() 
        print("‼️OMG:viewDidLoad", webi)
        super.viewDidLoad()

        let url = URL(string: webi)!
        webView.load(URLRequest(url: url))

        let refresh = UIBarButtonItem(barButtonSystemItem: .refresh, target: webView, action: #selector(webView.reload))
        toolbarItems = [refresh]
        navigationController?.isToolbarHidden = false
    

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

    @IBAction func Menu1(_ sender: Any) 
        print("‼️OMG:viewDidLoad with menu1")
        webi =  "https://www.menu1.com"

    

    @IBAction func Menu2(_ sender: Any) 
        print("‼️OMG:viewDidLoad with menu1")
        webi =  "https://www.menu2.com"
    

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) 
        title = webView.title
    

【问题讨论】:

注意viewDidLoad 只被调用一次 请你帮帮我。我是 ios 新手。我想构建一个按钮网格,每个按钮打开不同的链接。我让它直接用谷歌链接打开 webview 的问题是不显示网格菜单。我卡在这里了。 把加载web数据的两行放到一个方法中,在viewDidLoadIBActions这两个中调用方法 除了viewDidLoad 一次调用部分尝试使用reloadIgnoringCacheData 发出您的url 请求以避免缓存相同的请求。 【参考方案1】:

您的问题是您更改了 urlStr webi 而没有再次重新加载 webview

func refresh()  
  let url = URL(string: webi)!
  webView.load(URLRequest(url: url))

@IBAction func Menu1(_ sender: Any) 
    print("‼️OMG:viewDidLoad with menu1")
    webi =  "https://www.menu1.com"
    self.refresh()


@IBAction func menu2(_ sender: Any) 
    print("‼️OMG:viewDidLoad with menu1") // other link
    webi =  "https://www.menu1.com"
    self.refresh()

///

导航->按钮菜单VC->webViewVC

当您在按钮菜单中时

 let vc = ViewController()
 vc.webi = "" // set link according to the clicked button
 self.navigationController?.pushViewController(vc,animated:true)

看看这个Demo

【讨论】:

在应用程序启动期间,它不显示网格菜单,而是直接打开 webview?我需要的是在启动应用程序后需要显示带有按钮的网格菜单,并且在单击按钮时它必须打开一个网页视图中的链接。 你的场景是 vc 吗?您是否还制作故事板入口点或出现在导航左中角的箭头? 你必须为按钮菜单创建一个vc,不要在webviewVC中实现它 在故事板中选择导航然后执行***.com/questions/27683590/… 我有 main.Stroryboard,里面有 3 个场景 (VC) 1 个 Webview 2 个网格菜单和 3 个导航

以上是关于ViewController 总是加载相同的链接的主要内容,如果未能解决你的问题,请参考以下文章

加载后和 webview 之前相同的初始屏幕

Swift:PrepareForSegue 正在运行但未加载 ViewController

在 AppDelegate 中为其他 Viewcontroller 初始化 managedContect

UITextField floatValue 加载 Nib

iOS view和viewController的生命周期

在具有多个故事板的应用程序中以编程方式从 Storyboard 加载 ViewController