Swift - UIView 委托协议未返回值

Swift - UIView Delegate Protocol not returning value

我正在尝试应用以下问题中的颜色选择器。

Simple swift color picker popover (iOS)

我的设置方式是将颜色选择器 class 附加到主视图控制器中的 UIView。 Michael Ros 的代码有效,但是当我尝试使用我的主视图控制器访问它时,没有任何反应。下面是我在我的视图控制器中使用的代码。这个对吗?我检查了其他问题,但我不确定自己做错了什么。

class ViewController: UIViewController {
  weak var colorPickerDelegate: ColorPickerDelegate?

override func viewDidLoad() {
    super.viewDidLoad()
    self.colorPickerDelegate = self
    } 
  }
}

extension ViewController: colorPickerDelegate {
func colorChanged(color: UIColor) {
   print(color)
  }
}

颜色选择器代码可以在附加问题中找到,因为我不确定是否允许复制代码。

感谢您的帮助

你应该更换 colorChanged -> colorDidChange ! 如果你委托的是 ColorPickerDelegate;我也这么认为

您应该继承 UIView 并将其分配给视图控制器视图,然后将 ColorPickerView 的委托设置给视图控制器:

ColorPickerView.swift

class ColorPickerView : UIView {

weak var delegate: ColorPickerDelegate?
// Other code from Michael Ros's adaptation.
}

ViewController.swift

import UIKit

class ViewController: UIViewController {

    lazy var colorPickerView = ColorPickerView(frame: CGRect(origin: .zero, size: CGSize(width: self.view.frame.width, height: 300)))

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .white

        self.colorPickerView.delegate = self

        self.view.addSubview(colorPickerView)

    }


}

extension ViewController: ColorPickerDelegate {
    func colorDidChange(color: UIColor) {
        print(color)
    }
}