前提・実現したいこと
SwiftUIで設定画面を作り、その設定内容を別の処理を行うクラスから直接参照したいのですが、
その方法がわかりません。
例えば、設定画面に色別のトグルを用意し、「実行」ボタンを押したときに、
その各トグルがONかOFFかどうか判断して処理を分たい場合です。
設定項目が1個とかであれば引数に設定するなどで対応できそうなのですが、
設定項目が複数ある場合も同様の方法になるのでしょうか?
設定画面を設けたアプリにおいて、その設定内容をどのように扱うのか
一般的なお作法をご教授いただきたいです。
SwiftUI
1import Foundation 2import SwiftUI 3 4public class SettingInfo : ObservableObject { 5 @Published var flagRed = true 6 @Published var flagBlue = true 7 @Published var flagGreen = true 8 @Published var flagYellow = true 9 @Published var flagPurple = true 10} 11
SwiftUI
1struct ColorSelectView: View { 2 @EnvironmentObject var setting : SettingInfo 3 4 var body: some View { 5 Section(header: Text("色を選択してください").foregroundColor(.black)){ 6 HStack 7 { 8 Toggle(isOn: $setting.flagRed) { 9 Text(setting.flagRed ? "赤ON" : "赤OFF") 10 .foregroundColor(.red) 11 } 12 .toggleStyle(SwitchToggleStyle(tint: Color.red)) 13 14 Toggle(isOn: $setting.flagBlue) { 15 Text(setting.flagBlue ? "青ON" : "青OFF") 16 .foregroundColor(.blue) 17 } 18 .toggleStyle(SwitchToggleStyle(tint: Color.blue)) 19 20 Toggle(isOn: $setting.flagGreen) { 21 Text(setting.flagGreen ? "緑ON" : "緑OFF") 22 .foregroundColor(.green) 23 } 24 .toggleStyle(SwitchToggleStyle(tint: Color.green)) 25 } 26 HStack 27 { 28 Toggle(isOn: $setting.flagYellow) { 29 Text(setting.flagYellow ? "黄ON" : "黄OFF") 30 .foregroundColor(.yellow) 31 } 32 .toggleStyle(SwitchToggleStyle(tint: Color.yellow)) 33 34 Toggle(isOn: $setting.flagPurple) { 35 Text(setting.flagPurple ? "紫ON" : "紫OFF") 36 .foregroundColor(.purple) 37 } 38 .toggleStyle(SwitchToggleStyle(tint: Color.purple)) 39 40 } 41 42 } 43 } 44} 45
試したこと
別のクラスから SettingInfo().flagRed
と表現するとコンパイルは通るのですが、
正しい値を取れていません。
回答1件
あなたの回答
tips
プレビュー