ios - 如何防止选择器视图重复
问题描述
我有一个使用以下代码创建 UIPickerView 的扩展
extension FirstVC {
func createPicker() -> UIPickerView {
let customPicker = UIPickerView(frame: CGRect(x: 0, y: 0, width: 400, height: 216))
customPicker.backgroundColor = .white
return customPicker
}
}
我有一个存储属性,它通过我的视图控制器中的闭包进行初始化
private var proxyPeoplePicker: UIPickerView {
return createPicker()
}
我还有 5 个选择器视图,为了防止重复,我试图在上面的存储属性下方使用,但它不起作用,当我尝试获取内部信息时,它总是返回它的初始值。可能是什么原因,如何防止这些选择器视图出现代码重复?
解决方案
计算属性就像一个函数。确保此类属性的结果始终与其依赖项的当前状态保持同步可能很有用。
func createPicker() -> UIPickerView {
let customPicker = UIPickerView(frame: CGRect(x: 0, y: 0, width: 400, height: 216))
customPicker.backgroundColor = .white
return customPicker
}
在您的情况下,此类计算属性不依赖任何内容,并且在您引用时始终返回 UIPickerView 的新实例proxyPeoplePicker
。
您真正想要实现的是使用视图控制器初始化的存储属性。它只计算一次并保持不变,直到您覆盖它。这是你需要做的,有 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
}
}
推荐阅读
- python - Django / 获取不正确的 pk 以供评论
- awk - 匹配字符并从底部行中提取数据
- kubernetes - 如何在集群角色 kubernetes 中包含或排除特定命名空间
- sql-server - 将值与 NULL 进行比较时无法更新表
- sql - 比较 Big Query 中 A 列具有不同值而 B 列具有相同值的两个连续行中的时间戳
- python - 用多条线绘制多个 y 轴
- c - 如何在c中删除链表中零值的节点
- c++ - C ++中的分段错误错误
- apache-kafka - 动物园管理员弹性
- javascript - Gridsome 项目托管在 netlify 上。点击时,即使 URL 更新,页面也不会加载