我希望标题有一些意义,但我想要做的是从我的dataPicker中为项目选定变量设置一个字段值。当只有一个字段要设置时,我已经能够完成这项工作,但我的项目将在每个视图上有多个字段,这些字段将根据它是什么字段从dataPicker调用数据。我希望这很清楚。也许在你查看代码的时候。
我已经设置了一个测试项目来限制此问题。所以我的变量告诉视图在dataPicker中填充的数组是季节还是运动。将从赛季/运动阵列接收数据的领域是enterSeason和enterSport。当选择器从季节返回一个值时,我想将它与enter组合以创建var enterSeason来设置== itemSelected。这种语言对我来说是非常新的,所以我尝试了以前用于将文本和变量组合在一个值中的唯一方法。这显然不起作用。感谢帮助。
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UIGestureRecognizerDelegate {
@IBOutlet var enterSeason: UITextField!
@IBOutlet var enterSport: UITextField!
var dataPickerView = UIPickerView()
var season = ["2013", "2014", "2015"] //multi-season
//var season = ["2015"] //single-season
var sport = ["Baeball", "Football", "Basketball", "Hokey"]
var activeField = []
override func viewDidLoad() {
super.viewDidLoad()
enterSeason.inputView = dataPickerView
dataPickerView.delegate = self
dataPickerView.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return activeField.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return activeField[row] as! String
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
var itemSelected = activeField[row] as! String
self.enter"\activeField".text = itemSelected
}
}
答案 0 :(得分:1)
编辑: 如何显示和隐藏选择器?您的代码显示变量声明和委托方法...答案可能会相应变化..
由于您将选择器显示为文本字段的输入视图,因此为每个文本字段设置UITextFieldDelegate ..并在 if(t.image != null) {
Bitmap bm = Globals.setImageScale(con, Uri.parse(t.image));
localViewHolder.m_item1.setImageBitmap(bm);
}
检查哪个字段变为活动状态,如果没有其他
textFieldDidBeginEditing
在选择器选择器中,根据当前的activeField对象
设置相关文本字段的值func textFieldDidBeginEditing(textField: UITextField) {
if textField === enterSeason {
activeField = season
}
else if textField === enterSport {
activeField = sport
}
}
在storboard / xib中设置文本字段的委托:
附:
- 将func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if activeField === season {
enterSeason.text = season[row] as! String
}
else if activeField === sport {
enterSeason.text = sport[row] as! String
}
}
重命名为activeField
或更合适
编辑2:正如你所提到的,我在下面提到的第二种方法并不适合你,因为这些领域太多我仍然把它作为答案的一部分,因为它可以帮助别人
但是你想要实现的目标非常简单,方法过于复杂/怪异。所以,另一种方式你可以实现整个事情..
最简单(但可能不是最好)的方法是为每个字段设置两个activeDataArray
个实例。你可以直接在if else块中检查UIPickerView
OR pickerView == seasonPickerView
并进行条件编程,你不需要pickerView == sportPickerView
变量..