์ฐธ๊ณ ์ฌ์ดํธ ๋ฐ ์ถ์ฒ
https://www.youtube.com/watch?v=ZQXzZ1hxQwo
์ ์๋ณธ ์์์ ์ฐธ๊ณ ํ์๋ฉด ๋ ์์ธํ ์ ์ ์์ต๋๋ค! ์ ์์์ด ์์ด ํด๋น ํฌ์คํ ์ ๊ณต๋ถํ๋ค ์๊ฒ๋ ์ ๋ง ์ ์ด ๋์์ต๋๋ค.
NavigationLink
NavigationLink๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋น๊ฒ์ด์ ์คํ์ ์์ ์ ์์
NavigationView {
VStack {
NavigationLink(value: <#T##Hashable?#>, label: <#T##() -> View#>)
}
.padding()
}
- value ๋ ์ด๋ ์ํค๊ธฐ ์ํด ๋งํฌ๋ฅผ ๊ฑธ ๋ทฐ, label์ ์คํ์ผ๋ก ์์ ๋ทฐ๋ฅผ ํด๋ก์ ๋ก ์ ๋ฌ
NavigationView {
VStack {
NavigationLink {
Text("๋ ๋ฒ์งธ ๋ทฐ")
} label: {
Text("์ฒซ ๋ฒ์งธ ๋ทฐ")
}
}
.padding()
}
(์๋ ๋ฒํผ๋ ์๋๊ณ ํ ์คํธ ๋ทฐ์ ๋งํฌ ๊ฑธ๋ฆฌ๋๊ฒ ๋๋ฌด ์ ๊ธฐํ๋ค)
NavigationStack
var body: some View {
NavigationStack {
}
}
- NavigationStack์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ drivenํ Navigation์ ๋ง๋ค ์ ์์
NavigationStack {
List {
Section("Manufacturerers") {
ForEach(brands) { brand in
NavigationLink(value: brand) { // value based
Text(brand.name)
}
}
}
}
.navigationDestination(for: CarBrand.self) { brand in
Text("New \(brand.name)")
}
}
- NavigationStack์์์ NavigationLink๋ฅผ ํฌํจ์ํค๊ณ NavigationLink๋ฅผ ๋๋ ์ ๋ ์ด๋ํ ๋ทฐ๋ navigationDestination์์ ์ค์ ํด ์ค
- ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ๋ค๋ฅธ ๋ทฐ๋ก ์ฐ๊ฒฐํ๊ธฐ
NavigationStack {
// ์๋ต
.navigationDestination(for: CarBrand.self) { brand in
Text("New \(brand.name)")
}
.navigationDestination(for: Car.self) { car in
Color(.systemRed)
}
}
- navigationDestination์ ์ถ๊ฐํด์ ํ์ ๋ณ๋ก ๋ทฐ๋ฅผ ์ฐ๊ฒฐํด ์ค ์ ์์
NavigationPath
@State private var navigationPath = [CarBrand]()
- ๋ฆฌ์คํธ๋ฅผ ์ ์ธํด ์ค
NavigationStack(path: $navigationPath) {
// ์๋ต
- NavigationStack์ path ์ธ์๋ก ๋ฐ์ธ๋ฉ ํด์ค(two-way binding)
navigationPath = []
- path์ ๋น ๋ฆฌ์คํธ๋ฅผ ์ ๋ฌํ๋ ๊ฒฝ์ฐ rootView๋ก ์ด๋ํจ (UINavigationViewController ์์ popToRootViewController์ ๊ฐ์)
- ํน์ ๊ฐ์ด ์กด์ฌํ๋ ๋ฆฌ์คํธ๋ฅผ ์ ๋ฌํ๋ ๊ฒฝ์ฐ ๊ทธ ๊ฐ๊ณผ ๋งค์น๋๋ ๋ทฐ๋ฅผ Stack์ ์์
'iOS ๐ > SwiftUI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SwiftUI] Preview์์ ๋ฒ ์ ค ์ญ์ ํ๊ณ View ํฌ๊ธฐ์ ๋ง์ถ๊ธฐ (0) | 2023.08.14 |
---|---|
[SwiftUI] ์ ๊ฒฝ์ ๊ทธ๋ผ๋์ธํธ๋ก ์ค์ ํ๊ธฐ (0) | 2023.08.13 |
[SwiftUI] TextField Keyboard Type ํค๋ณด๋ ํ์ ์ ๋ฆฌ (0) | 2023.03.20 |
[SwiftUI] info plist contained no UIScene configuration ์๋ฌ ๋ฐ๊ฒฝ์ฐ (0) | 2023.03.19 |
[SwiftUI] TextField format ์ฌ์ฉํ๊ธฐ (0) | 2023.03.19 |