UITableViewのdataSource考える(簡易版)

April 16, 2016

すごく簡易的で、さらに、もっと良くなると思うので途中経過です。最近、設定画面などのTableViewのデータソースなどは無理に構造化せず、毎回こう書けば良いのではないかと思ってます。

private enum CellType { case InAppPurchase case Licenses case Version }

private struct Item { let text: String let detailText: String? let type: CellType let accessoryType: UITableViewCellAccessoryType }

private struct Section { let items: [Item] }

final class SettingsViewController: UITableViewController {

private var dataSource: \[Section\]!

override func viewDidLoad() {
    super.viewDidLoad()
    
    dataSource = \[
        Section(
            items: \[
                Item(text: "Purchase", detailText: nil, type: .InAppPurchase, accessoryType: .DisclosureIndicator),
                Item(text: "Licenses", detailText: nil, type: .Licenses, accessoryType: .DisclosureIndicator),
                Item(text: "Version", detailText: nil, type: .Version, accessoryType: .None)
            \]
        )
    \]
}

}

これなら、毎回簡単に書き換えられるし、複数セクションの時も楽です。itemsはletで入っていますが、まぁ、変更があっるならvarにしてもいいし、DataSourceごと取り替えても良いと思います。

大きなプロジェクトで複雑な動きをするならそれに合わせてPOPなどしていけばいいと思いますが簡易的なのならこれが結構シンプルでいいんじゃないかな〜。


Profile picture

Written by morizotter who lives and works in Tokyo building useful things. You should follow them on Twitter