gpt4 book ai didi

ios - 如何防止选择器 View 重复

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

我有一个使用以下代码创建 UIPickerView 的扩展

extension FirstVC {
func createPicker() -> UIPickerView {
let customPicker = UIPickerView(frame: CGRect(x: 0, y: 0, width: 400, height: 216))
customPicker.backgroundColor = .white
return customPicker
}
}

我有一个存储属性,它是通过我的 View Controller 中的闭包初始化的

private var proxyPeoplePicker: UIPickerView {
return createPicker()
}

我还有 5 个选择器 View ,为了防止重复,我尝试在存储属性上方使用,但它不起作用,当我尝试获取内部信息时,它总是返回给我它的初始值。可能是什么原因造成的?如何防止这些选择器 View 的代码重复?

最佳答案

计算属性就像一个函数。确保此类属性的结果始终与其依赖项的当前状态保持同步可能很有用。

func createPicker() -> UIPickerView {
let customPicker = UIPickerView(frame: CGRect(x: 0, y: 0, width: 400, height: 216))
customPicker.backgroundColor = .white
return customPicker
}

在您的情况下,此类计算的属性不依赖于任何内容,并且每当您引用 proxyPeoplePicker 时始终返回 UIPickerView 的新实例。

您真正想要实现的是使用 View Controller 初始化的存储属性。它只计算一次并保持不变,直到您覆盖它。这是你需要做的,有 5 个 pickerView 实例来操作:

class FirstVC : UIViewController {

private var pickerView1: UIPickerView?
private var pickerView2: UIPickerView?
private var pickerView3: UIPickerView?
private var pickerView4: UIPickerView?
private var pickerView5: UIPickerView?

override func viewDidLoad() {
pickerView1 = createPicker()
pickerView2 = createPicker()
pickerView3 = createPicker()
pickerView4 = createPicker()
pickerView5 = createPicker()

// now you can operate with your picker view

pickerView1?.backgroundColor = .black
}
}

关于ios - 如何防止选择器 View 重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53263178/

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