Search code examples
swiftuitextfielduipickerview

How to set tag for picker view programmatically?


I am Building iOS App using swift.

In my viewcontroller i need 6 picker views.

Previously i created PickerViews using IB.

Now i think to do it in programmatically,because i want to implement Done and Cancel Button.

I created a sample project and checked.There i am getting the pickerview displayed.

But in my original app its not working.

May be number of pickers is large.

And Every time tag value of picker is showing zero.

I tried to set tag value like this,

pickerView.tag == 2

This is code for creating Picker

 func createPicker1(){

        var pickerView = UIPickerView(frame: CGRectMake(0, 200, view.frame.width, 300))
        pickerView.tag == 2
        pickerView.backgroundColor = .greenColor()
        pickerView.delegate = self
        pickerView.dataSource = self
        pickerView.showsSelectionIndicator = true

        var toolBar = UIToolbar()
        toolBar.barStyle = UIBarStyle.Default
        toolBar.translucent = true
        toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
        toolBar.sizeToFit()

        println(pickerView.tag)
        var doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "donePicker1")
        var spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
        var cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "canclePicker1")

        toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
        toolBar.userInteractionEnabled = true

        pwrd.inputView = pickerView
        pwrd.inputAccessoryView = toolBar     
    }

These are my Picker Methods.

 func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {    
        return 1
    }
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
      if (pickerView.tag == 0){
            return categories.count
        }
        else
      {
        return skillNeeded.count
        }
    }
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {

        if (pickerView.tag == 0)  {

            return categories[row]
        }
        else{
            return skillNeeded[row]
        }

    }
    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
    {
        if (pickerView.tag == 0) {
        user.text = categories[row]
        }
        else  {
        pwrd.text = skillNeeded[row]
        }
    }

Thanks.Your help will be appreciated.


Solution

  • You don't set values with ==

    try pickerView.tag = 2