본문 바로가기

SwiftUI

SwiftUI_ 1일차 (SwiftUI 를 이용해서 간단한 회원가입 뷰 만들어보기)

var 변수명으로 선언하면 구조체의 특성상 내부 매서드에서 변수 값을 변경 할 수 없음

@State 라는 키워드를 붙여주면 값이 변경 되면 뷰를 다시 랜더링 해줌.

import SwiftUI

struct ContentView: View {

    let genderType = ["남성", "여성"]

    @State var name = ""
    @State var emailAdr = ""
    @State var bornIn = 0
    @State var bornMon = 0
    @State var bornDay = 0
    @State var gender = 0

필요한 변수 선언

   var body: some View {

        NavigationView{
            Form{
                Text("Welcome")

                Section(header: Text("이름")){
                    TextField("이름을 입력해주세요", text: $name)
                        .keyboardType(.default)
                }

                Section(header: Text("생년월일")){
                    Picker("출생년도", selection: $bornIn){
                        ForEach(1900 ..< 2020){
                            Text("\(String($0))년생")
                        }
                    }
                    Picker("월", selection: $bornMon){
                        ForEach(1 ..< 13){
                            Text("\(String($0))월")
                        }
                    }
                    Picker("일", selection: $bornDay){
                        ForEach(1 ..< 32){
                            Text("\(String($0))일")
                        }
                    }
                }

                Section(header: Text("성별")){
                    Picker("성별", selection: $gender){
                        ForEach( 0 ..< genderType.count ){
                            Text("\(self.genderType[$0])")
                        }
                    }.pickerStyle(SegmentedPickerStyle())
                }

                Section(header: Text("메일 주소")){
                    TextField("e-mail 주소를 입력해주세요", text: $emailAdr)
                        .keyboardType(.default)
                }

                Section(){
                    Button("가입"){

                        //버튼 눌렀을 경우 발생하는 callback

                    }
//                    .padding(.leading, 165.0)
                }

            }.navigationBarTitle("회원가입")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

}

Swift UI에서 최상위 View는 최대 10개의 Child View를 가질 수 있고 만약 10개를 초과하게된다면 위와같이 다른 태그(Section부분)를 이용하여 감싸주어야함.