【问题标题】:Programmatically scroll a Picker View up or down以编程方式向上或向下滚动选取器视图
【发布时间】:2019-03-02 08:27:10
【问题描述】:

正如您在此处看到的,Picker 视图上方的工具栏同时具有下一步和后退按钮,我想在用户单击这些按钮时以编程方式上下滚动 Picker 视图。我不知道如何做同样的事情。请帮助我了解如何实施。

【问题讨论】:

  • 使用UIPickerView的func selectRow(_ row: Int, inComponent component: Int, animated: Bool)
  • 每次你看到一个选择器视图被滚动,那是因为一个新的项目被选中了。你可以有一个指向你最后一个realSelected 项目的私有变量(我猜是当有人按下“完成”时?),但为了使用<> 滚动,你需要selectRow跨度>
  • @regina_fallangi,我明白了。谢谢

标签: ios swift uipickerview


【解决方案1】:

您的<> 按钮需要关联操作,让我们为“selectNext”做一个示例。我假设你只有一个组件:

var myElements: [SomeType] = // whichever elements you are displaying
var pickerView: UIPickerView // maybe an outlet or an initialised programmatically variable

@objc func selectNext() {
    let currentSelectedRow = pickerView.selectedRow(inComponent: 0)
    guard currentSelectedRow < myElements.count else {
        return
    }
    if currentSelectedRow + 1 < myElements.count {
        pickerView.selectRow(currentSelectedRow + 1, inComponent: 0, animated: true)
    } else { // next element is 0th of list
        pickerView.selectRow(0, inComponent: 0, animated: false)
    }        
}

selectPrevious 函数也是如此。您还可以添加更多检查以确保您要选择的元素没有超出范围,或者myElements 包含元素。

【讨论】:

  • 请检查你的答案,有很多拼写错误。请纠正他们
  • @ArshadShaik,你介意给我一个你看到的拼写错误的例子吗?
  • 请检查 pickerView.selecteRow(0, inComponent: 0, animated: 0) 它应该是 picker.selectRow(0, inComponent: 0, animated: false) "animated 可以是 false 或 true"
  • @ArshadShaik,谢谢!在 StackOverflow 中也可以自己进行编辑,不需要是作者。更正了curentSelectedRow -> currentSelectedRow 无论如何
  • 当我昨天尝试编辑时,它说编辑队列已满。所以我请你编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多