【发布时间】:2018-08-30 21:56:55
【问题描述】:
我正在尝试在 UIPickerView 滚动时读取数据。
Didselectedrow 仅在 UIPicker 不移动时为您提供后行值。滚动时如何从 UIPickerView 中获取值?
我需要准确地知道中间行上传递的数据,获取它们并将其他对象相应地更新到 UIView 中。
我尝试使用计时器调用读取函数,但是在滚动时 didselectedrow 不会更新自己,请参见下面的代码:
// define the timer
let cycleTimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.readUIPicker), userInfo: nil, repeats: true)
由于定义了计时器,它每 0.1 秒调用一次读取函数
// read UIPicker
func readUIPicker() {
let selectedRow = myPicker.selectedRow(inComponent: 0)
// Do something here based on selectedRow value
print("SelectedRow = \(selectedRow)")
}
问题是 selectedRow 只会在滚动停止后更新。无法控制传递的元素。
【问题讨论】:
-
我不认为你可以这样做......至少它在文档中不可用:developer.apple.com/documentation/uikit/uipickerviewdelegate
-
为什么需要这样做?您可以在旋转前告知当前设置;一旦停止/选择,您就知道最终设置;并且您知道在两者之间传递的所有中间值是什么,因为您首先输入了选择器的选项。您还想确定哪些其他信息?
-
看看滚动指示器插入是否有帮助或
UIScrollViewDelegate
标签: swift uipickerview