ストーリーボード未使用で開発しています。
tableviewでenumを使ってrowを管理しています。
できている事
cellForRowAt indexPath内に、
下記コード① enumのswitch文を作り、UITableViewに表示できています。
//コード① enum EnumCells: Int { case firstCell = 0 case secondCell static var count: Int { return EnumCells. secondCell.rawValue + 1 } }
let sectionName = ["タイトル1", "タイトル2"]と定義し、
それを下記コード③の様に返しています。
//コード③ //セクション数 func numberOfSections(in tableView: UITableView) -> Int { return sectionName.count } //セクションヘッダ func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { return sectionName[section] }
他にもnumberOfRowsInSection内でreturn EnumCells.countとして
"タイトル1"と"タイトル2"のセクション内にenum(EnumCells)を表示できています。
実現したい事
下記コード④の様に、もう一つenum EnumCells2を作り、
//コード④ enum EnumCells2: Int { case firstCell2 = 0 static var count: Int { return EnumCells. firstCell2 + 1 } }
"タイトル1"セクション内にはEnumCells
"タイトル2"セクション内にはEnumCells2を表示したいです。
やっている事
EnumCells2のswitch文を追加しました。
そしてnumberOfRowsInSection内で
下記コード②の様に切り分けたいのですが、
シミュレータにはコード④のEnumCells2が、
"タイトル1"と"タイトル2"セクション内の両方に表示されてしまいます。
EnumCellsが表示されなくなります。
if sectionName.count == 1 { return EnumCells.count } else if sectionName.count == 2 { return EnumCells2.count } else { return 0 }
//追記
cellForRowAt indexPathのコードを追記しました。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { var titleText = "" let enumCell = EnumCells(rawValue: indexPath.row) switch (enumCell)! { case .firstCell: titleText = "FirstCell" case .secondCell: titleText = "SecondCell" } let enumCell2 = EnumCells2(rawValue: indexPath.row) switch (enumCell2)! { case .firstCell2: titleText = "FirstCell" } let cell = UITableViewCell() cell.textLabel?.text = titleText return cell }
//追記
cellForRowAt indexPathのコードを追記しました。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { var titleText = "" let enumCell = EnumCells(rawValue: indexPath.row) switch (enumCell)! { case .firstCell: titleText = "FirstCell" case .secondCell: titleText = "SecondCell" } let enumCell2 = EnumCells2(rawValue: indexPath.row) switch (enumCell2)! { case .firstCell2: titleText = "FirstCell" } let cell = UITableViewCell() cell.textLabel?.text = titleText return cell }
回答1件
あなたの回答
tips
プレビュー