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設計で考えていかなければならなそうです。
この記事が気に入ったらサポートをしてみませんか?