ViewにToggleを配置しました。
Viewは、ViewModelからModelのisToggleの値の変更を取得し、
Toggleのオンオフを切り替えようとしています。
しかし、下記の実装ではToggleはクリックしても初期値のtrueから変更されません。
(.constant()は定数を示しているので値が変化していないようです。)
MVVMを意識した記述をする場合、どのように記述すべきでしょうか?
ご教授お願いいたします。
View
1import SwiftUI 2 3struct ContentView: View { 4 @ObservedObject var viewModel: ViewModel = ViewModel() 5 var body: some View { 6 Toggle("hogehoge", isOn: .constant(viewModel.isToggle)) 7 .padding() 8 } 9} 10 11struct ContentView_Previews: PreviewProvider { 12 static var previews: some View { 13 ContentView() 14 } 15}
ViewModel
1import Foundation 2import SwiftUI 3 4class ViewModel: ObservableObject { 5 @Published var model: Model = Model() 6 7 var isToggle: Bool { 8 return model.isToggle 9 } 10}d
Model
1import Foundation 2 3struct Model { 4 var isToggle: Bool = true 5}
環境
- macOS : 11.6
- Xcode : 13.2.1
回答3件
あなたの回答
tips
プレビュー