日記
親から野菜とか果物とかが届いた。今日は買い物の日だったのでついでに色々かってきてなんやかんや作った。大量に料理すると気持ちがいい。鍋が足りない。
今日書いたコード
wip: センサーの設定画面をガチャガチャやっている · Gurrium/Komusou@d2de62c · GitHub
感想
手癖で~Viewと~ViewStateを作ってきたけどStateなのか??と思った。~ViewFunctionalityとか~ViewLogicの方が適切なのでは?
純粋にロジックだけが書いてあるならObservableObjectに適合する必要はないけどそうすると破綻したので他の役割も持っていそう。ということはFunctionalityやLogicも適切ではなさそう。と思ってガチャガチャやっていたらロジックだけにできたので全部Viewに移した。このときSensorSettingView
の問題は?
struct SensorSettingView: View { @State var isSpeedSensorSheetPresented = false @AppStorage("speed_sensor_uuid") private var speedSensorUUIDString: String? var speedSensorName: String { guard let string = speedSensorUUIDString, let uuid = UUID(uuidString: string), let peripheral = BluetoothManager.shared.connectedPeripherals[uuid], let name = peripheral.name else { return "" } return name } var body: some View { List { Row( isSheetPresented: $isSpeedSensorSheetPresented, itemLabel: "スピードセンサー", valueLabel: speedSensorName ) { SensorSelectingView() } // TODO: ケイデンスセンサー } .listStyle(.insetGrouped) } private struct Row<Content: View>: View { @Binding var isSheetPresented: Bool let itemLabel: String let valueLabel: String @ViewBuilder let sheetContent: () -> Content var body: some View { Button { isSheetPresented = true } label: { HStack { Text(itemLabel) Spacer() Text(valueLabel) .foregroundColor(.secondary) } } .sheet(isPresented: $isSheetPresented, content: sheetContent) .tint(.primary) } } }