UITableViewのdataSource考える(簡易版)

UITableViewのdataSource考える(簡易版)すごく簡易的で、さらに、もっと良くなると思うので途中経過です。最近、設定画面などの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などしていけばいいと思いますが簡易的なのならこれが結構シンプルでいいんじゃないかな〜。

Pocket
LINEで送る

You may also like...