带变量的类型转换

时间:2019-09-23 23:26:45

标签: swift uitableview

我有一个枚举,将指示用于tableViewCell的标识符和类。

enum Settings: String {
    case Delete = "deleteCell"

    var cellType: UITableViewCell.Type {
        switch self {
            case .Delete: return DeleteCell.self
        }
    }
}

在我的tableView rowForIndexPath中,我能够使用redirectIdendifyer来获取单元格,但是它无法识别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
}

0 个答案:

没有答案
相关问题