继续的 UIButton

UIButton that segues

这是我的代码:

import UIKit

class ViewController: UIViewController {

func transfer(controller: UIViewController) {
    let vc = ViewController() //View controller segueing to
    self.present(vc, animated: true, completion: nil)
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


    let btn1 = UIButton(frame: CGRect(x: 10, y: 10, width: 100, height: 30))
    btn1.backgroundColor = UIColor.clear
    btn1.addTarget(self, action: #selector(transfer(controller: ViewController2())), for: UIControlEvents.touchUpInside)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
    }

}

我遇到的问题是: “#selector”的参数不引用“@objc”方法、属性 或初始化程序 我想知道这意味着什么以及如何解决它。我试过用@objc 替换#selector,我试过在#selector 之前添加@objc。谢谢大家的帮助。

Error: argument of #selector does not refer to an @objc method

问题不在于在按钮上添加目标。它带有函数transfer,它应该符合@objc协议,因为#selector只能引用@objc方法:

保持函数如下:

@objc func transfer() {
    let vc = ViewController() //View controller segueing to
    self.present(vc, animated: true, completion: nil)
}

添加添加选择器为:

    btn1.addTarget(self, action: #selector(self.transfer), for: UIControlEvents.touchUpInside)