@objc protocol MyDelegate {
func buttonAction()
}
class CustomNavigationBar: UINavigationController {
var delegte : MyDelegate?
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton.init(frame: CGRectMake(200, 10, 50, 30))
button.setBackgroundImage(UIImage(named: "a.png"), forState: .Normal)
button.addTarget(self, action: "testing", forControlEvents: .TouchUpInside)
self.navigationBar.addSubview(button)
}
func testing(){
self.delegte?.buttonAction()
print("Pavan")
}
如果我按下此按钮,则测试正在呼叫。
但是在viewcontroller中调用委托方法却给出了错误
class ViewController: UIViewController,MyDelegate{
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "hi"
let vc = CustomNavigationBar()
vc.delegte = self
}
func buttonAction() {
print("Tupale")
}
答案 0 :(得分:0)
你会介意提示错误信息吗?
更新:
在CustomNavigationBar
课程中,您必须将var delegte : MyDelegate?
更改为var delegte : UIViewController?
。
然后在ViewController
类中,您可以将self
作为UIViewController的实例设置为vc
的委托。
试一试。