This is because the default PickerViewRow does not need a model and just rows with actual models will be passed to selectedRowModels.
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent column: Int) {
guard let columns = dataSource?.columns else {
return
}
if validate(column: column, row: row) {
let numberOfColumns = pickerView.numberOfComponents
var selectedRowModels: [PickerViewRowModelProtocol] = []
if numberOfColumns > 0 {
for columnIndex in (0...numberOfColumns-1) {
let selectedRowIndex = pickerView.selectedRow(inComponent: columnIndex)
let row = columns[columnIndex].rows[selectedRowIndex]
// HERE IS THE PROBLEM, IF THERE IS NO MODEL IT WONT BE APPENDED
if let rowModel = row.model {
selectedRowModels.append(rowModel)
}
}
}
let rowModels: [PickerViewRowModelProtocol]? = selectedRowModels.isEmpty ? nil : selectedRowModels
let currentRowModel = columns[column].rows[row]
callback?.didSelectRow(self, in: pickerView, row: currentRowModel, rowModels: rowModels)
} else {
return
}
}