見出し画像

SwiftUIで簡単なListを作る

おはようございます。ママさんエンジニアのトモヨです。
今まではUITableViewでリストを作成していましたが、SwiftUIで簡単に描けるようになったので、試してみました。

import SwiftUI

struct Colors: Identifiable {
    var id = UUID()
    var name: String
}

struct ColorList: View {
    private let colors = [
        Colors(name: "red"),
        Colors(name: "blue"),
        Colors(name: "green")
    ]
    
    var body: some View {
        List(colors) { color in
            Text(color.name)
        }
    }
}

struct ColorList_Previews: PreviewProvider {
    static var previews: some View {
        ColorList()
    }
}

Listを使うと簡単に書けました。今までは UITableViewを使って実装していました。UITableViewに準拠した書き方になりますので、セルの総数やセルのViewを返してあげる必要がありました。

import UIKit

class UITableViewColor: UITableViewController {
    var values = ["red", "blue", "green"]

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return values.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let value = values[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        cell.textLabel?.text = value
        return cell
    }
}

一番気になったのが、SwiftUIではUIViewControllerで行っていた処理をViewで行っていることです。
UIKitではMVCモデルを使った実装がベースとなっていましたが、Cの処理が重すぎることが問題視されていました。
SwiftUIではMVVM設計で考えていかなければならなそうです。

この記事が気に入ったらサポートをしてみませんか?