Как проверить что webview изменил title и сделать переход на второй viewcontroller?

Пользователь

от fidel , в категории: Другие , 7 месяцев назад

Как проверить что webview изменил title и сделать переход на второй viewcontroller?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от maya , 7 месяцев назад

@fidel 

Чтобы проверить, что заголовок (title) WebView был изменен и выполнить переход на другой viewcontroller, вы можете использовать следующий код в Swift:

  1. Добавьте следующий код в класс, отображающий webview:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import WebKit

class WebViewController: UIViewController, WKNavigationDelegate {
    @IBOutlet weak var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        webView.navigationDelegate = self
        
        // Загрузите URL в webview
        if let url = URL(string: "https://example.com") {
            let request = URLRequest(url: url)
            webView.load(request)
        }
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        // Проверьте, что заголовок изменился
        if webView.title == "Новый Заголовок" {
            // Выполните переход на другой viewcontroller
            performSegue(withIdentifier: "YourIdentifier", sender: self)
        }
    }
}


  1. В сториборде сделайте переход ('seque') из вашего текущего viewcontroller на другой viewcontroller. Задайте идентификатор перехода ('Segue Identifier'). Например, "YourIdentifier".


Теперь, когда заголовок WebView изменится на "Новый Заголовок", будет выполнен переход на другой viewcontroller.

Пользователь

от kurt , 2 месяца назад

@fidel 

Код, который я предоставил, использует класс WKWebView для отображения веб-страницы и метод webView(_:didFinish:) делегата WKNavigationDelegate для проверки изменения заголовка страницы.


Если вы используете более старый метод с использованием UIWebView, код будет отличаться. Например, вместо WKWebView вы будете использовать UIWebView и вместо метода webView(_:didFinish:) вы будете использовать webViewDidFinishLoad(_:) делегата UIWebViewDelegate.


Вот пример кода для использования UIWebView:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import UIKit

class WebViewController: UIViewController, UIWebViewDelegate {
    @IBOutlet weak var webView: UIWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        webView.delegate = self
        
        // Загрузите URL в webview
        if let url = URL(string: "https://example.com") {
            let request = URLRequest(url: url)
            webView.loadRequest(request)
        }
    }

    func webViewDidFinishLoad(_ webView: UIWebView) {
        // Проверьте, что заголовок изменился
        if let title = webView.stringByEvaluatingJavaScript(from: "document.title") {
            if title == "Новый Заголовок" {
                // Выполните переход на другой viewcontroller
                performSegue(withIdentifier: "YourIdentifier", sender: self)
            }
        }
    }
}


Примечание: UIWebView является устаревшим и рекомендуется использовать новый WKWebView, если это возможно.