ForEach
- array, ranges์ ํจ๊ป ๋ฐ๋ณต ์์ ์ ํตํด ์ฌ๋ฌ ๋ทฐ๋ฅผ ์์ฑํ ์ ์์
- ํด๋ก์ ธ๋ฅผ ํตํด ์คํ๋๋ฉฐ loop์ ๋ชจ๋ ์์ดํ ์ ํ๋ฒ์ฉ ์ํํ๊ฒ ๋จ
class test {
init() {
let titles = ["a", "b", "c", "d", "e"]
self.loopAllItems(items: titles)
}
func loopAllItems(items: [String]) {
items.forEach { print($0) }
}
}
- ForEach๋ ๊ธฐ์กด์ Swift์์ ์ฌ์ฉํ ๊ณ ์ฐจ ํจ์ forEach์ ๋์๊ณผ ์ฌ์ฉ๋ฒ์ด ๊ฐ์
ScrollView {
ForEach(0 ..< 100) {
Text("\($0)")
}
}
- ForEach๋ฅผ ์ฌ์ฉํด์ ๋ฐ๋ณต๋๋ ๋ทฐ๋ฅผ ๊ฐ๋จํ ์ฝ๋๋ก ํ๋ฉด์ ๊ทธ๋ ค ์ค ์ ์์
์์ ์ฝ๋
enum StudentType: String {
case elementary = "์ด๋ฑํ๊ต"
case middle = "์คํ๊ต"
case high = "๊ณ ๋ฑํ๊ต"
}
- ํ์ ํ์ ์ enum์ผ๋ก ๊ด๋ฆฌ
let types: [StudentType] = [.elementary, .middle, .high]
@State private var selectedType: StudentType = .elementary
- ๋ ํ๋กํผํฐ๋ฅผ ์์ฑํด ์ค. typs๋ ํผ์ปค์์ ์ ํํ ์ ์๋ ํ์ . selectedType์ ํผ์ปค์์ ์ ํํ ํ์์ ํ์ ์ ์ ์ฅํ๋ ํ๋กํผํฐ๋ก @Sate property wrapper์ ์ฌ์ฉํ์ฌ ์ ์ธํด์ ํ์ฌ ์ฌ์ฉ์๊ฐ ์ ํํ ์ ํ๊ฐ์ ์ ์ฅํ ์ ์๋๋ก ํด์ค
var body: some View {
NavigationView {
Form {
Picker("ํ์์ ์์์ ์ ํํ์ธ์.", selection: $selectedType) {
ForEach(types, id: \.self) {
Text($0.rawValue)
}
}
}
}
}
- selectedType์ด two binding์ผ๋ก ์ฐ๊ฒฐ๋จ
- ForEach๋ฅผ ์ฌ์ฉํด์ types์ ๋ชจ๋ ๊ฐ์ Text View๋ก ๋ฐํํด ์ค
- ForEach์ ์ฒซ๋ฒ์งธ ์ธ์๋ ๋ฃจํ๋ฅผ ๋๋ฆด ์ด๋ ์ด๋ ranges๋ฅผ ์ ๋ฌ
- ๋ ๋ฒ์งธ ์ธ์์ธ id๋ SwiftUI์ ํน์ฑ ๋๋ฌธ์ ์กด์ฌํ๋ ๊ฐ. ์คํฌ๋ฆฐ์์ ๊ฐ ๋ทฐ๋ ๊ณ ์ ์๋ณ ๊ฐ๋ฅํ id ๊ฐ์ ๊ฐ์ ธ์ผ ํ๊ณ ๋ณํ๊ฐ ์ผ์ด๋ ๋ ์๋ณ์ด ๊ฐ๋ฅํจ
์ฐธ๊ณ ์ฌ์ดํธ
https://www.hackingwithswift.com/books/ios-swiftui/creating-views-in-a-loop
'iOS ๐ > SwiftUI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[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 |
[iOS/SwiftUI] NavigationStack (0) | 2023.03.15 |
[iOS/SwiftUI] Form, Group, Section, Controls (0) | 2023.03.13 |