Project Unknown's Blog

Peojct.Unknownと言う名前で細々とアプリ開発をやってるメンバーのブログです。

テーブルで余計なセパレータが表示されてしまう問題

どうも、どうまずです。

TableViewのセパレータですが、ちょっと変な動作をします。

次の画像をご覧下さい。

f:id:project-unknown:20170604203048p:plain

これですが、
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
}

これでまるで背景のようなセルが完成です。

f:id:project-unknown:20170604203227p:plain


余計なセパレータが表示されないようになります。
(正確には「余計なセパレータが表示されていないかのようになります。」ですかねぇ・・・)