2016-06-17 12 views
1

Ich habe eine UIViewController wie folgt aus:ein Ziel an einen Selektor zu einem anderen Objekt gehört, Hinzufügen von

import UIKit 
import WebKit 

class ViewController: UIViewController { 

    var webView: WKWebView? 
    var backButton: UIButton? 

    override func loadView() { 
    self.webView = WKWebView() 

    self.backButton = UIButton(type: .system) 
    self.backButton?.addTarget(self.webView, action: #selector(goBack), for: .touchUpInside) 
    } 
} 

Dieser Code versucht Abgreifen der Zurück-Taste, um die WKWebView ‚s goBack() Instanzmethode zu verbinden. Beachten Sie, dass ich self.webView an den addTarget() Anruf der Schaltfläche übergeben habe.

Dies führt zu einem Kompilierungsfehler: "Use of unresolved identifier 'goBack'". Ich dachte, der Swift-Compiler könnte goBack() in die WKWebKit Instanz auflösen.

Die einzige Art, wie ich das bekommen kann, ist zu kompilieren in self und leitet den goBack() Anruf manuell weitergeben müssen:

override func loadView() { 
    self.webView = WKWebView() 

    self.backButton = UIButton(type: .system) 
    self.backButton?.addTarget(self, action: #selector(goBack), for: .touchUpInside) 
    } 

und

func goBack() { 
    self.webView?.goBack() 
} 

Bin ich hier fehlt etwas offensichtlich?

Antwort

5

Sie können nur Ihre Wähler qualifizieren:

#selector(self.webView.goBack)