Toggle
Toggle in SwiftUI is equivalent UI as UISwitch for UIKit.
It is on/off switch
But, different part is how to manage on/off state.
Example
ToggleTest.swift
import SwiftUI struct ToggleTest: View { @Binding var isFavorite: Bool var body: some View { VStack { Toggle(isOn: self.$isFavorite) { Text("Toggle") }.padding(10) } } } struct ToggleTest_Previews: PreviewProvider { static var previews: some View { ToggleTest(isFavorite: .constant(false)) } }
Add Toggle with on/off parameter. This parameter is defined as @Binding var
For preview, just pass Binding<Bool>.constant(false) for test.
Actually, only this, toggle switch is not working in an app.
How to pass @Binding var for actual use
Now, View is ready, but still have @Binding. For test, constant is fine, but we need to change this parameter
ToogleTestParentView.swift
This is parent view, and have @EnvironmentObject to manage status in multiple Views.
import SwiftUI class ToggleV: ObservableObject { @Published var toggle = false } struct ToggleTestParentView: View { @EnvironmentObject var toggleV : ToggleV var body: some View { HStack { ToggleTest(isFavorite: $toggleV.toggle) } } } struct ToggleTestParentView_Previews: PreviewProvider { static var previews: some View { ToggleTestParentView().environmentObject(ToggleV()) } }
Use
Let’s use this from SceneDelegate
let contentView = ToggleTestParentView().environmentObject(ToggleV()) // Use a UIHostingController as window root view controller. if let windowScene = scene as? UIWindowScene { let window = UIWindow(windowScene: windowScene) window.rootViewController = UIHostingController(rootView: contentView) self.window = window window.makeKeyAndVisible() }
Pass environmentObject by code. And this parameter keeps in memory.
コメント