UIPickerView正在选择错误的Row-Swift

时间:2015-05-31 15:49:52

标签: ios swift cocoa-touch uipickerview

所以我的UIPickerView并不像我想要的那样工作。它可以在大约3/4的时间内正常工作,但是另外1/4它没有。

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

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return listsArray.count

}

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView
{
    activeQuizPlace = row
    var pickerLabel = UILabel()
    pickerLabel.textColor = UIColor.whiteColor()
    pickerLabel.text = listsArray[row]
    pickerLabel.font = UIFont(name: "Georgia", size: 22)
    pickerLabel.textAlignment = NSTextAlignment.Center
    return pickerLabel
}

listsArray包含5个项目(即字符串)。 0-2行在100%的时间内正常工作。但是,当选择第3行时,它偶尔会说第1行是,当选择第4行时,它有时会说第2行是。我认为这个问题与我控制UIPickerView的最后一个函数有关。我只是从这个网站复制了该代码,作为改变文本颜色和字体的方法。在我使用这个功能之前,我从来没有遇到任何问题,或者至少没有注意到它。旁注:我正在使用Xcode 6.3.2

我需要一种方法让拾取器视图正常工作,以及能够更改其字体和颜色。我很乐意帮助解决这个问题,我一直在网上寻找答案2个小时,并且无法提前知道我做错了什么,谢谢!

1 个答案:

答案 0 :(得分:3)

我认为您需要从显示的代码中删除行activeQuizPlace = row,然后在下面添加此功能。

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    activeQuizPlace = row
}

您使用的函数不是使用用户选择的索引调用的,而是使用系统绘制视图所需的索引调用它。

建议的功能应该是你想要的功能(希望如此)。