はじめに
どうも、どうまずです。
TableViewのセパレータですが、ちょっと変な動作をします。
本文
次の画像をご覧下さい。
これですが、
TableViewのセルは色付き2つだけなんです。
しかし、余計なセパレータが引かれてしまい、複数のセルがあるように見えてしまいます。
セル数が固定の場合、TableViewの高さを調節すればいいのですが、
動的の場合、TabelViewの高さ調整をするのは、正直めんどくさいです。
どうにかセパレータを非表示にする方法はないのか?
いろいろ設定を変更などしてみましたが、
どうやら、最後のセルの高さを継承して、セパレータが引かれてしまうようです。
苦肉の索として、
このセパレータ問題用にセクションを一つ用意する。
そのセルのサイズを画面サイズと合わせます。
そうすると、余計な罫線が見えなくなります。
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if (indexPath.section == testTable.numberOfSections - 1) {
// 最後のセクションの場合、高さを画面サイズに合わせる
return UIScreen.main.bounds.size.height
} else {
return 50.0
}
}
しかし、このままでは、タップしたときに、セルの色が変わってしまい、背景感が無くなってしまいます。
そのため、最後のセクションのセルをタップされた場合、色がかわらないように設定します。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
if (indexPath.section == testTable.numberOfSections - 1) {
// 最後のセクションの場合、タップされても、色が変わらないように設定(背景感UP)
cell.selectionStyle = UITableViewCellSelectionStyle.none
}
return cell
}
これでまるで背景のようなセルが完成です。
余計なセパレータが表示されないようになります。
(正確には「余計なセパレータが表示されていないかのようになります。」ですかねぇ・・・)