-
#19. 피커뷰(PickerView)SwiftUI 앱만들기 2022. 7. 11. 18:23
#1. ContentView
import SwiftUI
struct ContentView: View {
@State private var selectionValue = 0
let myColorArray = ["Red","Green","Blue"]
func changeColor(index: Int) -> Color {
switch index{
case 0:
return Color.red
case 1:
return Color.green
case 2:
return Color.blue
default:
return Color.red
}
}
var body: some View {
VStack(alignment: .center) {
Circle()
.foregroundColor(self.changeColor(index: selectionValue))
.frame(width: 50, height: 50)
Text("선택된 값 : \(selectionValue)")
Text("선택된 색깔 : \(myColorArray[selectionValue])")
Picker(
selection: $selectionValue,
label: Text(""),
content: {
Text("Red").tag(0)
Text("Green").tag(1)
Text("Blue").tag(2)
}).pickerStyle(SegmentedPickerStyle())
.padding(.bottom, 50)
Picker(
selection: $selectionValue,
label: Text(""),
content: {
Text("Red").tag(0)
Text("Green").tag(1)
Text("Blue").tag(2)
}).pickerStyle(InlinePickerStyle())
.frame(width: 50, height:100)
.clipped() //자르기
.padding()
.border(self.changeColor(index: selectionValue), width: 10)
}
.padding(.horizontal, 50)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#2. MyFilteredList
import SwiftUI
enum School : String, CaseIterable {
case elementary = "초등학교"
case middle = "중학교"
case high = "고등학교"
}
struct MyFriend : Identifiable, Hashable{
var id = UUID()
var name : String
var school : School
}
func preparedData() -> [MyFriend]{
var newList = [MyFriend]()
for i in 0...20{
let newFriend = MyFriend(name: "내 친구 \(i)", school: School.allCases.randomElement()!)
newList.append(newFriend)
}
return newList
}
struct MyFilteredList: View {
@State private var filteredValue = School.elementary
@State private var myFriendsList = [MyFriend]()
//생성자 메소드
init(){
_myFriendsList = State(initialValue: preparedData())
}
var body: some View {
VStack{
Text("선택된 필터 : \(filteredValue.rawValue)")
Picker(selection: $filteredValue,
label: Text(""),
content: {
Text("초등학교").tag(School.elementary)
Text("중학교").tag(School.middle)
Text("고등학교").tag(School.high)
}).pickerStyle(SegmentedPickerStyle())
List{
ForEach(myFriendsList.filter{ filterTerm in
// $0.school == filteredValue
filterTerm.school == filteredValue
}) {
friendItem in
GeometryReader{ geometryProxy in
HStack{
Text("name: \(friendItem.name)")
.frame(width: geometryProxy.size.width / 3)
Divider()
Text("school: \(friendItem.school.rawValue)")
.frame(width: geometryProxy.size.width / 2)
}
}
}
}
// List{
// ForEach(myFriendsList, id: \.self){ friendItem in
//
// GeometryReader{ geometryProxy in
// HStack{
// Text("name: \(friendItem.name)")
// .frame(width: geometryProxy.size.width / 3)
// Divider()
// Text("school: \(friendItem.school.rawValue)")
// .frame(width: geometryProxy.size.width / 2)
// }
// }
//
// }
// } //List
}
}
}
struct MyFilteredList_Previews: PreviewProvider {
static var previews: some View {
MyFilteredList()
}
}
출처: https://youtu.be/G_kNxmyrdBE
'SwiftUI 앱만들기' 카테고리의 다른 글
#21. 메뉴(Menu) (0) 2022.07.12 #20. 딥링크(DeepLink) (0) 2022.07.12 #18. 토스트, 팝업(Toast, Popup) (0) 2022.07.11 #17. 텍스트필드(TextField, SecureField) (0) 2022.07.11 #16. 버튼 스타일(Button Style) (0) 2022.07.11