【问题标题】:UIPickerView selectRow doesn't worksUIPickerView selectRow 不起作用
【发布时间】:2016-10-26 22:24:31
【问题描述】:

我尝试在我的 PickerView 中选择一行,但它不起作用。它停留在第一行。

这是我的代码:

@IBOutlet weak var pickerView: UIDatePicker!

func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int
{
    return 1
}

func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int
{
    return 10
}

func pickerView(pickerView: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String!{
    return String(row + 1)
}


//In viewDidLoad
pickerView.selectRow(6, inComponent: 0, animated: true)

pickerView 运行良好,它显示 1 到 10,但 selectRow 不起作用。

它应该选择第六行,但它停留在第一行。

【问题讨论】:

  • 再次检查您的IBOutlet 是否正确绑定
  • 顺便说一句:从架构的角度来看,viewDidLoad 是不是有点太早了......?在 viewWillAppear 或 viewDidAppear 上选择行可能会更好。我认为你的代码现在可能有无效的订单,你检查过什么叫做 1st 吗?
  • 我已经仔细检查了我正确绑定的 IBOutlet,是的。我也尝试用 viewWillAppear 更改 viewDidLoad 但它仍然不起作用

标签: swift uipickerview


【解决方案1】:

viewDidLoad 方法中,您的选择器是空的。由于没有第 6 个元素可供选择,因此不会选择它。

如果您将 select 调用的执行延迟到数据加载完成之后,您可以执行此操作。可能一个周期就足够了。

首先,尝试将您的选择移至viewDidAppear

祝你好运!

【讨论】:

  • 很高兴听到这个消息。请记住,在 viewDidLoad 方法中,没有调用 numberOfRowsInComponent,也没有调用 titleForRow。这就是为什么选择器仍然是空的。毕竟它只是刚刚加载。 ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多