How to create a segmented control and read values from it
SwiftUI/Responding to events 2019. 11. 19. 11:09반응형
Hacking with Swift 사이트의 강좌 번역본입니다.
How to create a segmented control and read values from it
SwiftUI의 Picker는 UIKit의 UISegmentedControl과 동일한 세그먼트 컨트롤을 만드는데 사용될 수 있으며, 특정 상태(state)에 바인딩해야하고 식별될 수 있도록 각 세그먼트에 태그를 제공해야 합니다. 세그먼트(Segments)는 텍스트나 그림이 될 수 있습니다; 다른 것은 조용하게 실패할 것입니다.
예제에서처럼, favoriteColor 상태 프로퍼티로 동작하는 세그먼트 컨트롤을 만들고 선택된 값을 보여주는 텍스트 뷰를 아래에 추가합니다.
struct ContentView: View {
@State private var favoriteColor = 0
var body: some View {
VStack {
Picker(selection: $favoriteColor, label: Text("What is your favorite color?")) {
Text("Red").tag(0)
Text("Green").tag(1)
Text("Blue").tag(2)
}.pickerStyle(SegmentedPickerStyle())
Text("Value: \(favoriteColor)")
}
}
}
하지만, 이 경우에 다양한 색상을 저장하는 배열을 만드는게 더 좋고, 반복문을 사용해서 내부에서 텍스트 뷰를 만들기 위해 ForEach를 사용합니다.
struct ContentView: View {
@State private var favoriteColor = 0
var colors = ["Red", "Green", "Blue"]
var body: some View {
VStack {
Picker(selection: $favoriteColor, label: Text("What is your favorite color?")) {
ForEach(0..<colors.count) { index in
Text(self.colors[index]).tag(index)
}
}.pickerStyle(SegmentedPickerStyle())
Text("Value: \(colors[favoriteColor])")
}
}
}
반응형
'SwiftUI > Responding to events' 카테고리의 다른 글
How to add a gesture recognizer to a view (0) | 2019.11.19 |
---|---|
How to control the tappable area of a view using contentShape() (0) | 2019.11.19 |
How to read tap and double-tap gestures (0) | 2019.11.19 |
How to create a stepper and read values from it (0) | 2019.11.19 |
How to create a date picker and read values from it (0) | 2019.11.19 |
How to create a picker and read values from it (0) | 2019.11.18 |
How to create a slider and read values from it (0) | 2019.11.18 |
How to disable autocorrect in a TextField (0) | 2019.11.18 |