Регистрация ячеек обычно происходит статическим способом.
Типы элементов UITableViewCell:
enum CustomElementType: String {
case header
case field
case picker
case toggle
case datePicker
}
Регистрация ячеек:
tableView.register(CollapsibleTableViewHeader.self, forHeaderFooterViewReuseIdentifier: CustomElementType.header.rawValue)
tableView.register(FieldViewCell.self, forCellReuseIdentifier: CustomElementType.field.rawValue)
tableView.register(PickerViewCell.self, forCellReuseIdentifier: CustomElementType.picker.rawValue)
tableView.register(ToggleViewCell.self, forCellReuseIdentifier: CustomElementType.toggle.rawValue)
tableView.register(DatePickerViewCell.self, forCellReuseIdentifier: CustomElementType.datePicker.rawValue)
Я хочу зарегистрировать их вцикл, приблизительное утверждение:
[FieldViewCell.self, PickerViewCell.self, ToggleViewCell.self, DatePickerViewCell.self].forEach { (GenericViewCell) in
tableView.register(GenericViewCell, forCellReuseIdentifier: ?)
}
Я предполагаю, что для решения проблемы необходима следующая структура:
struct Register {
let cell: UITableViewCell
let type: CustomElementType
}
И что-то вроде этого: регистр ячеек:
[Register(cell: FieldViewCell.self, type: .field), Register(cell: PickerViewCell.self, type: .picker), Register(cell: ToggleViewCell.self, type: .toggle), Register(cell: DatePickerViewCell.self, type: .datePicker)].forEach { (RegisterView) in
tableView.register(RegisterView.cell, forCellReuseIdentifier: RegisterView.type.rawValue)
}
Я получаю следующее предупреждение:
Тип выражения неоднозначен без контекста
Я хочу получить лучшее решение этой проблемы.