Я хочу создать табличное представление с таможенными ячейками, каждая ячейка отличается. Но я хочу, чтобы реализация была такой умной. Я подумал, вместо того, чтобы делать, если еще проверить cellForRow:atIndex:
для каждой ячейки, подобной этой
if indexpath.section == 0 {
// Create first cell
} else if indexpath.section == 1 {
// Create second cell
}
и т. Д.
Я решил создать протокол следующим образом:
protocol tableviewProtocol {
func cellForAt(index: IndexPath, object: ObjectModel) -> UItableviewCell
}
и для каждой ячейки, которую я хочу показать, я создаю класс следующим образом:
class firstCellClass: tableviewProtocol {
func cellForAt(index: IndexPath, object: ObjectModel) -> UItableviewCell {
// create and return the cell
}
}
и создал этот массив,
var tableviewDataSource: [tableviewProtocol] = []
, а затем заполнил массив следующим образом :
tabletableviewDataSource = [firstCellClass(), secondCellClass(), thirdCellClass()]
и в tableView cellForRow:atIndex:
return tableviewDataSource[indexpath.section].cellForAt(indexpath, object: object)
И это было хорошо, пока мне не пришлось создавать другую ячейку с другим типом объектной модели вместо ObjectModel
Так, как я могу сделать его более обобщенным c, который может принимать любые типы объектов?