Skip to content

Instantly share code, notes, and snippets.

@tarunon
Last active May 25, 2018 05:41
Show Gist options
  • Save tarunon/de72868fd5cb48965019d45df7775721 to your computer and use it in GitHub Desktop.
Save tarunon/de72868fd5cb48965019d45df7775721 to your computer and use it in GitHub Desktop.

indexPath

  • Aの下にB、というような相対的な配置ではなく絶対座標による指定。ViewOnlyでレイアウトを組むことができず、indexPathを設定するためのロジックが必須になる
  • ↑データ群からindexPathを一意に変換する(場合によっては双方向も)必要があり、ここがFatになりやすい
  • StaticTableViewは避けれるが、IBがFatになりやすい。Storyboardのみ。

Cellへのアクセス

  • 安全なアクセスは生成時に限定されている、ReuseもあるのでデータをCellで保持することが出来ない。もっともMVVMだとVMにデータを保持するので元からそういう作りであれば問題にはならないか。ただしFatVMになりやすいと感じている。
  • CellのイベントハンドラをVCに作るときにindexPathを取り出して…など結構煩雑になりがち。
  • tableViewCellForIndexPathがFatになりやすい。
  • StaticTableViewは避けれるが

レイアウト

  • 高さがCellの外にある。Self-sizingで楽にはなったが、変更するとなるとTableViewとの連携が必須。普通のViewのようにはいかない。
  • CellのReloadがベストプラクティス。しかしKeyboardとかアニメーションとかその他諸々止事無き事情で我々はCellの高さを変更しなければならなくなるだろう。
  • TableHeaderView/TableFooterView 高さ変更が…
  • Keyboardとカーソル, Cellの増減にまつわるScrollがハンドリング不可能。

外せない

  • DataSourceと他のロジックが結合しやすく、気がついたら手遅れになっている。indexPathを前提にロジックを組むともはや切り離せない構造になる。
  • ContentViewの上にIBがベタ置きされていてレイアウトを組み直しになる。(XML直書きすれば簡単にViewに戻せたりするケド)

個人的にムカつくこと

  • なんでheaderとfooterのString版はdelegateにおるんや、おまえらdataSourceやろ!
  • MultiSelectの扱いやすいEditingModeが隠されててずるい
  • 右スワイプも隠れてそう、ずるい
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment