@IBDesignable 协议

@IBDesignable with protocol

我在视图控制器中有一个 UIview xib,UIview class 有两个带有协议功能的按钮,但是当我按下按钮时协议功能从未被调用,故事板图像如下所示

协议方法如下

import UIKit

@objc protocol TopViewDelegate: NSObjectProtocol {
   @objc optional func pressRefreshButton()
   @objc optional func pressMenuButton()
}

UIView class

@IBDesignable class OnJob_Top: UIView,TopViewDelegate {

weak var delegate : TopViewDelegate? = nil

@IBAction func refreshButtonTouchUpInside(_ sender: UIButton) {
    delegate?.pressRefreshButton!()
}
@IBAction func menuButtonTouchUpInside(_ sender: UIButton) {
    delegate?.pressMenuButton!()
    print("come come")
}

视图控制器class

class HomeViewController: UIViewController {

   override func viewDidLoad() {
       super.viewDidLoad()
       let topView = OnJob_Top()
       topView.delegate = self
   }
}
extension HomeViewController:TopViewDelegate {

   func pressMenuButton() {
       print("come") // never come here
   }

   func pressRefreshButton() {
       print("come") // never come here
   }
}

考虑这段代码:

   let topView = OnJob_Top()
   topView.delegate = self

在第一行中,您创建了一个全新的 OnJob_Top 视图。

在第二行中,您将其设为委托。

在第三行……但是没有第三行。景色消失在一阵无声的烟雾中。这是没用的。

与此同时,故事板中的视图从未获得委托。所以它的委托方法永远不会被调用。