Как добавить две разные данные UIPickerView в одну метку? - PullRequest
0 голосов
/ 11 марта 2019

i have a two different UIPickerViews as shown image  left duration and right duration have same data with different arrays> Как добавить две данные UIPickerView в одну метку? как добавить часы и минуты в один ярлык?

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
    var hoursSelected1 = ""
    var minsSelected1 = ""

    var hoursSelected2 = ""
    var minsSelected2 = ""

    if strDurationComeFrom == "left"{

        hoursSelected1 = hoursArray1[myPickerView1.selectedRow(inComponent: 0)]
        minsSelected1 = minsArray1[myPickerView1.selectedRow(inComponent: 1)]
        leftDuration.text = "\(hoursSelected1) \(minsSelected1)"

    }

    else{

        hoursSelected2 = hoursArray2[myPickerView2.selectedRow(inComponent: 0)]
         minsSelected2 = minsArray2[myPickerView2.selectedRow(inComponent: 1)]



       rightDuration.text = "\(hoursSelected2) \(minsSelected2)"
    }
    totalDuration = leftDuration.text+rightDuration.text
}

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 11 марта 2019

Я предполагаю, что hoursArray и minsArray имеют целые числа, если нет, просто конвертируйте их и сделайте это в titleForRow.Я не вижу причин, чтобы иметь minsArray1 и minsArray2.Как минуты могут отличаться?Как часы могут отличаться?У вас может быть только один minsArray, который работает как источник данных для обоих сборщиков.

if component == 0 {
    return "\(hoursArray[titleForRow]) h"
} else {
    return "\(minsArray[titleForRow]) m"
}

Тогда:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
    let hourSelected = hoursArray[row]
    let minSelected = minsArray[row]
    let otherHour: Int
    let otherMin: Int
    let otherPickerView: UIPickerView!
    let labelText = "\(hourSelected)h \(minSelected)m"

    if pickerView == pickerView1 {
        leftDuration.text = labelText
        otherPickerView = pickerView2
    } else {
        rightDuration.text = labelText
        otherPickerView = pickerView1
    }

    otherHour = hoursArray[otherPickerView.selectedRow(inComponent: 0)]
    otherMin = minsArray[otherPickerView.selectedRow(inComponent: 1)]

    totalDuration = "\(hoursSelected + otherHour)h \(minSelected + otherMin)m"

}

Проверка этого кода будет означать воспроизведение всей вашей установки, и для этого потребуетсядолгое время, но я уверен, что логика работает.Если у вас есть какие-либо вопросы, дайте мне знать.

...