※あくまで一部です。
UITableViewDelegate
UITableViewDelegateのデリゲートメソッドは以下の通りです。
セルの高さを設定する
このメソッドのreturn値がそのままセルの高さになります。
indexPathでsectionとrowを設定することで、各セルの高さを設定できます。
以下のようにすると、高さ50のセルと高さ100のセルを交互に設定できます。
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { if indexPath.row % 2 == 0 { return 50.0f } return 100.0f }
実行結果
ヘッダーの高さを設定する
このメソッドのreturn値がヘッダーの高さになります。
indexPathでsectionとrowを設定することで、各セルの高さを設定できます。
以下のようにすると、一つ目のヘッダーの高さを50、それ以外のヘッダーの高さを100に設定して表示することができます。
※「numberOfSections(in tableView: UITableView) -> Int」メソッドでヘッダーの数を2に設定する必要があります。
// 今回はセクションの数を3に設定 func numberOfSections(in tableView: UITableView) -> Int { return 3 } func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { if section == 0 { return 50.0f } return 100.0f }
実行結果
ヘッダーのビューを設定する
テーブルビューのセクションの区切りを自分の好きなように変更したいときはこれ。
return値にビューを設定してあげると、それがテーブルビューのセクションの区切りに設定されます。
引数のsectionを使って、どのセクションにどういうビューを設定するか指定することもできます。
// 今回はセクションの数を2に設定 func numberOfSections(in tableView: UITableView) -> Int { return 2 } func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let view : UIView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: tableView.frame.size.width, height: tableView.frame.size.height)) if section == 0 { view.backgroundColor = UIColor.red } else { view.backgroundColor = UIColor.cyan } return view }
実行結果
セルが選択された時に処理を実行する
このメソッドはセルを選択した時に呼ばれます。
セルをタップしたら画面遷移する、などに使われます。
indexPathがあるので、セルを指定することもできます。
今回はタップしたセルの背景色を水色にするという処理をしてみましょう。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { }
実行結果
UITableViewDataSource
1セクション毎のセルの数を設定する
このメソッドは指定したセクションのセルの数を設定します。
引数のsectionを使ってセクション毎にセルの数を設定することができます。
実行結果