Как добавить кнопку возврата, которая скрывается, когда WebView не может go назад - PullRequest
0 голосов
/ 13 июля 2020

Мое приложение загружает WebView. Я встроил в контроллер навигации и добавил элемент кнопки на панели в качестве кнопки возврата ...

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.

Любая помощь или совет? Я новичок ie.

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Вы можете проверить свойство webView s canGoBack, чтобы установить свойство backButton s isHidden как true или false в методе webView(_:,didFinish:).

class FirstViewController: UIViewController, UIWebViewDelegate, WKNavigationDelegate, WKUIDelegate {
    //...
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { // triggers when loading is complete
        backButton.isHidden = !webView.canGoBack
    }
}
0 голосов
/ 13 июля 2020

Этот код должен работать:

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()
    }
}
...