Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何添加在WebView无法返回时隐藏的返回按钮_Swift_Xcode_Button_Uiwebview_Webkit - Fatal编程技术网

Swift 如何添加在WebView无法返回时隐藏的返回按钮

Swift 如何添加在WebView无法返回时隐藏的返回按钮,swift,xcode,button,uiwebview,webkit,Swift,Xcode,Button,Uiwebview,Webkit,我的应用程序加载一个网络视图。我嵌入了一个导航控制器,并添加了一个工具栏按钮项作为我的后退按钮 import UIKit import WebKit var refController:UIRefreshControl = UIRefreshControl() class FirstViewController: UIViewController, UIWebViewDelegate, WKNavigationDelegate, WKUIDelegate { @IBActi

我的应用程序加载一个网络视图。我嵌入了一个导航控制器,并添加了一个工具栏按钮项作为我的后退按钮

import UIKit
import WebKit

var refController:UIRefreshControl = UIRefreshControl()

class FirstViewController: UIViewController, UIWebViewDelegate, WKNavigationDelegate, WKUIDelegate {
    
    @IBAction func backwardsButtonTapped(_ sender: Any) {
        webView.goBack()
    }
    

    @IBOutlet weak var webView: WKWebView!
    @IBOutlet weak var activityIndicator: UIActivityIndicatorView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.webView.navigationDelegate = self
        self.webView.uiDelegate = self
        
        let url = "https://www.google.com/"
        let request = URLRequest(url: URL(string: url)!)
        self.webView.load(request)
这一切都很好,但我想隐藏“后退”按钮,使其仅在WebView加载新内容时显示。例如,该应用程序在google.com上打开,后退按钮隐藏,但当用户搜索某个内容并加载新页面时,该按钮就会出现

然后,当用户点击返回并返回google.com时,我希望按钮再次隐藏

有什么帮助或建议吗?我是个新手。

此代码应该可以工作:

import UIKit
import WebKit

class ViewController: UIViewController, UIWebViewDelegate, WKNavigationDelegate, WKUIDelegate {

    @IBOutlet weak var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.webView.navigationDelegate = self
        self.webView.uiDelegate = self
        
        let url = "https://www.google.com/"
        let request = URLRequest(url: URL(string: url)!)
        self.webView.load(request)
    }

    
    @IBAction func backwardsButtonTapped(_ sender: Any) {
        if (self.webView.canGoBack) {
            self.webView.goBack()
        }
    }
}
您还可以实现“前进”按钮:

@IBAction func forwardButtonTapped(_ sender: Any) {
    if (self.webView.canGoForward) {
        self.webView.goForward()
    }
}
此代码应适用于:

import UIKit
import WebKit

class ViewController: UIViewController, UIWebViewDelegate, WKNavigationDelegate, WKUIDelegate {

    @IBOutlet weak var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.webView.navigationDelegate = self
        self.webView.uiDelegate = self
        
        let url = "https://www.google.com/"
        let request = URLRequest(url: URL(string: url)!)
        self.webView.load(request)
    }

    
    @IBAction func backwardsButtonTapped(_ sender: Any) {
        if (self.webView.canGoBack) {
            self.webView.goBack()
        }
    }
}
您还可以实现“前进”按钮:

@IBAction func forwardButtonTapped(_ sender: Any) {
    if (self.webView.canGoForward) {
        self.webView.goForward()
    }
}

您可以检查
webView
canGoBack
属性,将
backButton
ishiden
属性设置为
webView(:,didfish:)
方法中的
true
false

class FirstViewController: UIViewController, UIWebViewDelegate, WKNavigationDelegate, WKUIDelegate {
    //...
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { // triggers when loading is complete
        backButton.isHidden = !webView.canGoBack
    }
}

您可以检查
webView
canGoBack
属性,将
backButton
ishiden
属性设置为
webView(:,didfish:)
方法中的
true
false

class FirstViewController: UIViewController, UIWebViewDelegate, WKNavigationDelegate, WKUIDelegate {
    //...
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { // triggers when loading is complete
        backButton.isHidden = !webView.canGoBack
    }
}

谢谢你的建议。不幸的是,当WebView无法返回时,按钮仍然没有隐藏。我希望这个按钮只有在页面可以返回时才会出现,否则会隐藏在导航控制器之外。谢谢你的建议。不幸的是,当WebView无法返回时,按钮仍然没有隐藏。我希望这个按钮只有在页面可以返回时才会出现,否则会隐藏在导航控制器之外。