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부분)를 이용하여 감싸주어야함.