Saturday, April 7, 2018

Swift uipickerView example



The reason I am posting this source code is that I was doing research for a project and came to the understanding that there are not many examples which demonstrate how to use Swift uipickerView in Xcode with one picker and many numbers to choose from.
  This particular example has two uipickerViews and two labels where the info from the uipickerView is sent to the labels.   This is not a full tutorial however it is a guide for someone who knows what they are doing in Swift but needs a quick example of a uipickerView in action.

import UIKit

class SettingsTableViewController: UITableViewControllerUIPickerViewDataSourceUIPickerViewDelegate {

    @IBOutlet weak var beginningPickerView: UIPickerView!
    @IBOutlet weak var endingPickerView: UIPickerView!
    @IBOutlet weak var beginningPickerViewLabel: UILabel!
    @IBOutlet weak var endingPickerViewLabel: UILabel!
    
    var picker: UIPickerView!
    var beginningPicker: UIPickerView!
    var beginningPickerSegue: String?
    var endingPickerSegue: String?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        picker = UIPickerView()
        picker.dataSource = self
        picker!.delegate = self
        picker.center = view.center
        view.addSubview(picker)
        
        beginningPicker = UIPickerView()
        beginningPicker.dataSource = self
        beginningPicker!.delegate = self
        view.addSubview(beginningPicker)
   
        self.pickerView(endingPickerView, didSelectRow: 1000, inComponent: 0)
        //endingPickerView.selectRow(1000, inComponent: 0, animated: false)
        
    }
    
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        if pickerView == picker {
            return 1
        } else if pickerView == beginningPicker {
            return 1
        }
        return 0
    }
   
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if pickerView == picker {
            return 1000
        } else if pickerView == beginningPicker {
            return 1000
        }
        return 0
    }
    
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return "\(row + 1)"
        
    }
    
    //this updates the label to reflect pickerView value
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        
        let selectedValueEndingPickerView = pickerView.selectedRow(inComponent: 0)
        let selectedBeginningPickerView = pickerView.selectedRow(inComponent: 0)
        
        if pickerView == beginningPicker {
            
            beginningPickerViewLabel.text = String(selectedBeginningPickerView + 1)
            beginningPickerSegue = String(selectedBeginningPickerView + 1)
            
        } else if pickerView == picker {
            endingPickerViewLabel.text = String(selectedValueEndingPickerView + 1)
            endingPickerSegue = String(selectedValueEndingPickerView + 1)
        }
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
        if (segue.identifier == "unwindToStart") {
            let svc = segue.destination asServerViewController
            svc.serverNumberLowLabel.text = beginningPickerSegue
            svc.serverNumberHighLabel.text = endingPickerSegue
        }
    }
    

}

Thank you for reading.



If this helped you great.  If you need more info to keep researching because I am a beginner and still learning myself.




Check out this app Link to Google play app

Featured Post

Washington State Poisonous Toad

The Western Toad pictured above can be green or brown and is always covered in warts.  (This is the frog he tried to eat) One w...