У меня есть перечисление, которое будет указывать идентификатор и класс для использования для tableViewCell.
enum Settings: String {
case Delete = "deleteCell"
var cellType: UITableViewCell.Type {
switch self {
case .Delete: return DeleteCell.self
}
}
}
В моем tableView rowForIndexPath я могу получить ячейку с помощью reuseIdendifyer, но он не распознаетsetting
объект для получения класса.Ошибка здесь Use of undeclared type 'setting'
, особенно в конце строки.
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let setting = Settings.enabledSettings[indexPath.row]
return tableView.dequeueReusableCell(withIdentifier: setting.rawValue, for: indexPath) as! setting.cellType
}
Теперь это не плохо с одним объектом, но скоро он будет расти, и это в основном то же самое, просто меняетсяимя класса.Можно ли извлечь тип класса из другого источника, подобного этому, чтобы я мог сделать функцию rowForIndexPath короткой и приятной, или мне нужно сделать что-то подобное?
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let setting = Settings.enabledSettings[indexPath.row]
var cell = tableView.dequeueReusableCell(withIdentifier: setting.rawValue, for: indexPath)
if setting == .Delete { cell = cell as! DeleteCell }
return cell
}