Итак, вот что я пытаюсь сделать.
Я работаю над приложением, которое позволяет компании, в которой я работаю, видеть, какой номер счета они должны использовать при совершении покупки. Есть определенные места, где затраты должны быть разделены на разные аккаунты в зависимости от местоположения, но это только для определенных немногих. Я хотел бы выдать предупреждение в виде всплывающего окна, которое я уже закодировал. Мой мыслительный процесс заключается в том, что я могу использовать операторы if / else для выдачи того, что мне нужно, но я не уверен, как это сформулировать. Он будет предоставлять обычный номер счета, если учетные записи не должны быть разделены, но затем предупреждение, если это произойдет. Код ниже. Моя проблема находится под didSelectRow.
Что на самом деле не показано, так это PopUpVC, который я использую, и полный список данных массива, потому что он длинный.
Большое спасибо этому сайту, так как он действительно помог мне написать мой первый проект!
let account: [Account] = [Account(number: 0, description: "SELECT")]
//there is actually more data here but I am taking it out so it's shorter
let tasks: [Task] = [Task(number: 0, description: "SELECT")]
//there is actually more data here but I am taking it out so it's shorter
let locations: [Location] = [Location(number: 0, description: "SELECT")]
//there is actually more data here but I am taking it out so it's shorter
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 3
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if component == accountsComponent {
return account.count
} else if component == tasksComponent {
return tasks.count
} else if component == locationsComponent {
return locations.count
}
return 0
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if component == accountsComponent {
return account[row].description
} else if component == tasksComponent {
return tasks[row].description
} else if component == locationsComponent {
return locations[row].description
}
return nil
}
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
if component == accountsComponent {
let label = (view as? UILabel) ?? UILabel()
label.font = label.font.withSize(12)
label.textAlignment = .center
label.text = account[row].description
return label
}
if component == tasksComponent {
let label = (view as? UILabel) ?? UILabel()
label.font = label.font.withSize(12)
label.textAlignment = .center
label.text = tasks[row].description
return label
}
if component == locationsComponent {
let label = (view as? UILabel) ?? UILabel()
label.font = label.font.withSize(12)
label.textAlignment = .center
label.text = locations[row].description
return label
} else {
let label = (view as? UILabel) ?? UILabel()
label.font = label.font.withSize(10)
label.textAlignment = .center
label.text = account[row].description
return label
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
pickerView.reloadAllComponents()
let selectedAccount = pickerView.selectedRow(inComponent: 0)
let selectedTask = pickerView.selectedRow(inComponent: 1)
let selectedLocation = pickerView.selectedRow(inComponent: 2)
let ACCOUNTS = account[selectedAccount].description
let TASKS = tasks[selectedTask].description
let LOCATION = locations[selectedLocation].description
let ACCOUNTSNUMBER = account[selectedAccount].number
let TASKSNUMBER = tasks[selectedTask].number
let LOCATIONNUMBER = locations[selectedLocation].number
if pickerView.selectedRow(inComponent: 2) = 10 //this is what I am unsure of how to do {
textViewInput = "WARNING - this should be split"
}
else {
textViewInput = "\(ACCOUNTSNUMBER) \(TASKSNUMBER) \(LOCATIONNUMBER)"
}