# ํ๋ํ์ต - SwiftUI ## ๐ถ ์คํ 1: Toggle View ๊ตฌํํ๊ธฐ #### ToggleView์ ํ์ผ์ View๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด์๋์ง๋ฅผ ๋ถ์ํด๋ด ์๋ค. - ZStack์ผ๋ก ํฐ ํ๋ฉด์ด ๊ตฌ์ฑ๋์ด ์๊ณ , VStack์ผ๋ก Text์ Toggle์ด ๊ฐ์ธ์ ธ์๋ค. #### stateToggle ์ ๋๋ฅผ ๋ View์๋ ์ด๋ค ๋ณํ๊ฐ ์์๊น์? - @State ํ๋กํผํฐ์ธ isStateToggleOn ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค. - @State ํ๋กํผํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ทฐ๊ฐ ์ ๋ฐ์ดํธ๋๋ค. - @State ํ๋กํผํฐ๋ฅผ ํ์ ๋ทฐ์ ๋ฐ์ธ๋ฉ์ผ๋ก($) ์ ๋ฌํ๋ค. #### stateToggle ํ ๊ธ ์ค์์น๊ฐ ์ผ์ ธ์์ผ๋ฉด Text์ State On ์ด, ํ ๊ธ ์ค์์น๊ฐ ๊บผ์ ธ์์ผ๋ฉด Text์ State Off ๊ฐ ๋ํ๋๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์? ```swift VStack { if isStateToggleOn { Text("State On") } else { Text("State Off") } Toggle("State", isOn: $isStateToggleOn) .padding() } ``` #### State PropertyWrapper๋ View์์ ์ด๋ค ์ญํ ์ ํ ๊น์? - ๊ฐ์ ๋ณํ๊ฐ ์์ ๋ View์ ์๋ฆผ์ ๋ณด๋ธ๋ค. <br> ## ๐ถ ์คํ 2: ToggleView ๋ค ๊ฐ๋ฅผ ์กฐํฉํด ContentView ์์ฑ #### ContentView ํ์ผ์์ ํ์ View๋ฅผ ์กฐํฉํด ์ฌ์ง๊ณผ ๊ฐ์ UI๋ฅผ ๋ง๋ค์ด๋ด ์๋ค. Stack , ๋๋LazyVGrid ํ์ฉ ```swift struct ContentView: View { var body: some View { VStack { HStack { ToggleView() ToggleView() } HStack { ToggleView() ToggleView() } } .padding(.vertical, 250) } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } ``` ## ๐ถ ์คํ 3: ์ฌ๋ฌ ๋ทฐ๊ฐ ๋์์ ๊ด์ฐฐํ๋ Property ์์ฑ ### ContentView๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋์ํ๋๋ก ํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํด์ผํ ๊น์? ```swift // Model.swift class Model: ObservableObject { @Published var isSharedStateToggleOn: Bool = false } ``` ```swift // ToggleView.swift struct ToggleView: View { @State private var isStateToggleOn: Bool = false @EnvironmentObject var model: Model var body: some View { ZStack { RoundedRectangle(cornerRadius: 20) .stroke(lineWidth: 2) .foregroundColor(.red) VStack { if isStateToggleOn { Text("State On") } else { Text("State Off") } Toggle("State", isOn: $isStateToggleOn) .padding() Toggle("Environment", isOn: $model.isSharedStateToggleOn) .padding() } } .padding() } } struct EnvironmentToggleView_Previews: PreviewProvider { static var previews: some View { ToggleView() .environmentObject(Model()) } } ``` ```swift // ContentView.swift struct ContentView: View { @EnvironmentObject var model: Model var body: some View { VStack { HStack { ToggleView() ToggleView() } HStack { ToggleView() ToggleView() } } .padding(.vertical, 150) } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() .environmentObject(Model()) } } ``` ### ObservedObject, StateObject, EnvironmentObject์ ๊ฐ๊ฐ์ ์ด๋ค ์ฐจ์ด๊ฐ ์๊ณ , ์ฌ์ฉ๋ฒ์ ์์๊น์? - ObservedObject - StateObject - EnvironmentObject
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up