Я создал класс, который реализует NSURLProtocol, который расскажет мне о запросах UIWebView. Я хочу сказать пользовательскому интерфейсу, что мы попали в интересующий URL и запустили код на ViewController для доступа к WebView.iOS Swift как сообщить контроллеру UIView, что мы получили информацию через объект NSURLProtocol
Я считаю, что протоколы - это решение, но, по-видимому, он не обманывает меня, как заставить это работать. Любые предложения и примеры кода будут высоко оценены. Вот что я пробовал до сих пор.
UI Посмотреть Controller.swift
class WebViewController: UIViewController,WebAuthDelegate {
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "http://example.com")
let request = NSURLRequest(URL: url!)
webView.loadRequest(request)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func onBackClick(sender: AnyObject) {
if(webView.canGoBack){
webView.goBack()
}
}
@IBAction func onFwdClick(sender: AnyObject) {
if(webView.canGoForward){
webView.goForward()
}
}
@IBAction func onRefresh(sender: AnyObject) {
webView.reload()
}
func getUserToken() {
print("RUN THIS AFTER I HIT URL IN URL PROTOCAL CLASS")
}
}
Вот мой NSURLProtocol реализован класс наряду с попыткой протокола (который, пожалуйста, скажите мне, если его неправильный подход)
class CUrlProtocol: NSURLProtocol {
//let delegate: WebAuthDelegate? = nil
override class func canInitWithRequest(request: NSURLRequest) -> Bool {
print("URL = \(request.URL!.absoluteString)")
if request.URL!.absoluteString == "http://api-dev.site.com/token" {
//Tell the UI That we now have the info and we can access the UIWebView Object
}
return false
}
}
protocol WebAuthDelegate{
func getUserToken()
}