@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 视图。
在第二行中,您将其设为委托。
在第三行……但是没有第三行。景色消失在一阵无声的烟雾中。这是没用的。
与此同时,故事板中的视图从未获得委托。所以它的委托方法永远不会被调用。
我在视图控制器中有一个 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 视图。
在第二行中,您将其设为委托。
在第三行……但是没有第三行。景色消失在一阵无声的烟雾中。这是没用的。
与此同时,故事板中的视图从未获得委托。所以它的委托方法永远不会被调用。