最小限の修正案として
Cell
のinit
を以下のように実装して
Swift
1 enum Cell: CaseIterable {
2 case firstCustomViewCell
3 case secondCustomViewCell
4 case sardCustomViewCell
5
6 var cellIdentifier: String {
7 switch self {
8 case .firstCustomViewCell:
9 return "FirstCustomViewCell"
10 case .secondCustomViewCell:
11 return "SecondCustomViewCell"
12 case .sardCustomViewCell:
13 return "SardCustomViewCell"
14 }
15 }
16
17 init(_ row: Int) {
18 switch row {
19 case 1:
20 self = .firstCustomViewCell
21 case 2:
22 self = .secondCustomViewCell
23 default:
24 self = .sardCustomViewCell
25 }
26 }
27 }
cellForRowAtのcellType
を生成しているところをCell(indexPath.row)
に書き換えれば行けます。
Swift
1 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
2// let cellType = Cell(rawValue: indexPath.row)
3 let cellType = Cell(indexPath.row)
4 switch cellType {
5 case .firstCustomViewCell:
6 let cell = tableView.dequeueReusableCell(withIdentifier: cellType.cellIdentifier) as! FirstCustomViewCell
7 return cell
8 case .secondCustomViewCell:
9 let cell = tableView.dequeueReusableCell(withIdentifier: cellType.cellIdentifier) as! SecondCustomViewCell
10 return cell
11 case .sardCustomViewCell:
12 let cell = tableView.dequeueReusableCell(withIdentifier: cellType.cellIdentifier) as! SardCustomViewCell
13 return cell
14 }
15 }