Q:

Как использовать по отдельности данные с двух pickerView на одном viewController?

На форме присутствуют два pickerView и каждый из них должен выводить данные в свои формулы и ответ в разные label. Столкнулся с такой проблемой, что один pickerView всегда изменяет данные в разных label. То есть если использовать первый pickerView, то он выведет данные в первый label, если дальше использовать второй, то он изменит данные в обеих label. В общем нужно что бы они работали раздельно. Пробовал разделить тегами, но это не дало нужного результата. Прошу заранее по лицу не бить, так как только осваиваю Swift =) 

Вот код:
import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    @IBOutlet weak var label2: UILabel!
    @IBOutlet weak var picker2: UIPickerView!
    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var picker: UIPickerView!

    var num = 241

    var sum = 0
    var sum1 = 0
    var sum2 = 0
    var sum3 = 0
    var sum4 = 0
    var sumTotal = 0
    var sumPart1 = 0.0
    var sumPart2 = 0.0
    let vsoKoef = 42.0

    var fo = 0
    var fo1 = 0
    var fo2 = 0
    var fo3 = 0
    var fo4 = 0
    var foTotal = 0
    var foPart1 = 0.0
    var foPart2 = 0.0
    let foKoef = 18.0

    override func viewDidLoad() {
        super.viewDidLoad()
        self.picker.delegate = self
        self.picker.dataSource = self
        self.picker2.delegate = self
        self.picker2.dataSource = self
        self.picker.tag = 1
        self.picker2.tag = 2
        self.label.tag = 3
        self.label2.tag = 4
        print("asd")
        print(Array(0...240))
        print("asdasd")
    }

    public func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 5
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return num

    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return String(row)
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if (picker.tag == 1) && (component == 0) {
            sum1 = row
        }
        if (picker.tag == 1) && (component == 1) {
            sum2 = row
        }
        if (picker.tag == 1) && (component == 2) {
            sum3 = row
        }
        if (picker.tag == 1) && (component == 3) {
            sum4 = row
        }
        if (picker.tag == 1) && (component == 4) {
            sumTotal = row
        }

        sum = sum1 + sum2 + sum3 + sum4

        if sum > 0 && sumTotal != 0 {
            sumPart1 = Double(sum) / Double(sumTotal)
        }
        if sum > 0 && sumTotal != 0 && sumPart1 > 0 {
            sumPart2 = sumPart1 * vsoKoef
        }
        if sum > 0 && sumTotal != 0 && sumPart1 > 0 && sumPart2 > 0 && (label.tag == 3){
            label.text = "\(sumPart2)"
        }

        if (picker2.tag == 2) && (component == 0) {
            fo1 = row
        }
        if (picker2.tag == 2) && (component == 1) {
            fo2 = row
        }
        if (picker2.tag == 2) && (component == 2) {
            fo3 = row
        }
        if (picker2.tag == 2) && (component == 3) {
            fo4 = row
        }
        if (picker2.tag == 2) && (component == 4) {
            foTotal = row
        }

        fo = fo1 + fo2 + fo3 + fo4

        if fo > 0 && foTotal != 0 {
            foPart1 = Double(fo) / Double(foTotal)
        }
        if fo > 0 && foTotal != 0 && foPart1 > 0 {
            foPart2 = foPart1 * foKoef
        }
        if fo > 0 && foTotal != 0 && foPart1 > 0 && foPart2 > 0 && (label2.tag == 4){
            label2.text = "\(foPart2)"
        }
    }
}

A:

Пардон, поискал похожие вопросы на этом портале и нашел решение:
заменить picker.tag == 1 на pickerView == picker.
И все будет работать раздельно.
Надо было сразу поискать похожие вопросы, были б мозги было бы сотрясение =)

