gpt4 book ai didi

ios - Swift - UIView 委托(delegate)协议(protocol)不返回值

转载 作者:行者123 更新时间:2023-11-28 05:50:39 25 4
gpt4 key购买 nike

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

Simple swift color picker popover (iOS)

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

class ViewController: UIViewController {
weak var colorPickerDelegate: ColorPickerDelegate?

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

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

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

感谢帮助

最佳答案

您应该继承 UIView 并将其分配给 View Controller View ,然后将 ColorPickerView 的委托(delegate)设置给 View Controller :

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)
}
}

View Hierarchy and Debug output

关于ios - Swift - UIView 委托(delegate)协议(protocol)不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53093758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com