如何从另一个变量构建变量

时间:2015-04-30 04:11:21

标签: ios swift

我希望标题有一些意义,但我想要做的是从我的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
    }
}

1 个答案:

答案 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中设置文本字段的委托:

enter image description here

附: - 将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变量..