ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #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

    댓글

Designed by Tistory.