Я предполагаю, что 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"
}
Проверка этого кода будет означать воспроизведение всей вашей установки, и для этого потребуетсядолгое время, но я уверен, что логика работает.Если у вас есть какие-либо вопросы, дайте мне знать.