将目标添加到属于不同对象的选择器

Rob*_*eph 1 selector ios addtarget swift2

我有一个像这样的UIViewController:

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)
  }
}
Run Code Online (Sandbox Code Playgroud)

此代码试图返回按钮的点击连接到WKWebView的goBack()实例方法.请注意,我已经self.webView转到了按钮的addTarget()通话.

这会导致编译错误:"Use of unresolved identifier 'goBack'".我以为Swift编译器能够解析goBack()为该WKWebKit实例.

我可以编译的唯一方法是手动传入self和转发goBack()调用:

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

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

和

func goBack() {
  self.webView?.goBack()
}
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗?

Ale*_*ica 7

您可以限定您的选择器:

#selector(self.webView.goBack)
Run Code Online (Sandbox Code Playgroud)