【发布时间】:2015-06-01 00:23:54
【问题描述】:
所以我的 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% 的时间都能正常工作。 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
我需要一种方法让选取器视图正常工作,并且能够更改其字体和颜色。我很想得到帮助 我一直在网上寻找答案 2 小时,但无法弄清楚我做错了什么,提前谢谢!
【问题讨论】:
-
您也可以发布您的 didSelectRow 方法吗?
-
这是我使用的与选择器视图相关的所有代码。这是我第一次使用 UIPicker 视图,所以我不确定我到底在做什么,也许没有这就是问题所在?我只是在最后一个方法中使用 activeQuizPlace = row 获取行值
-
嗨,所以如果我没记错的话,您正在使用 activeQuizPlace 值来获取用户选择的哪一行,对吧?这不是正确的方法。要正确处理选择,您需要实现 UIPickerViewDelegate 协议并实现 didSelectRow 方法。查看本教程:sourcefreeze.com/ios-uipickerview-example-using-swift
-
那是正确的。我浏览了那个教程并在那里使用了 didSelectRow 方法,它解决了这个问题。谢谢!
标签: ios swift cocoa-touch uipickerview