我有一个枚举,将指示用于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
}