Типирование с переменной - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть перечисление, которое будет указывать идентификатор и класс для использования для 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...