ios - UIPickerView 正在选择错误的行-Swift

标签 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
}

listArray 包含 5 个项目(它们是字符串)。第 0-2 行在 100% 的时间内正常工作。 However when row 3 is selected it occasionally says that row 1 was, and when row 4 is selected it sometimes says that row 2 was.我认为问题与我控制 UIPickerView 的最后一个函数有关。我只是从该网站复制了该代码,作为更改文本颜色和字体的一种方式。在我使用这个功能之前,我从来没有遇到过问题,或者至少从来没有注意到一个问题。旁注:我使用的是 Xcode 6.3.2

我需要一种方法让选择器 View 正常工作,并且能够更改其字体和颜色。我很乐意为此提供帮助我一直在网上寻找答案 2 小时,但无法弄清楚我做错了什么,提前致谢!

最佳答案

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

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

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

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

关于ios - UIPickerView 正在选择错误的行-Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30559365/

相关文章:

ios - 在 UI 测试中获取文本字符串的颜色

ios - 在不同设备上正确的图像和字体比例?

iphone - 如何将当前方法的名称或签名放入 NSString?

ios - 运行 Cordova 运行命令时 Xcode 构建错误

ios - 解析Back4App iOS Swift“PFUser.logInWithAuthType(inBackground:苹果”)方法将任务返回为nil

ios - MagicalRecords 从 JSON/NSDictionary 导入数据。导入关系

ios - Storyboard 不接受 UIView 的某些尺寸

iOS 内存病疯狂

Objective-C/iOS : Subclassing UITableViewController for a custom view

iphone - 如何获取 NSString 类的方法名称?