이번 포스팅에서는 Alert에 TextField를 넣는 방법을 알아보겠습니다.
iOS 16 이전의 SwiftUI에서는 Alert에 TextField를 넣을 수 없었습니다. 꼭 사용하고자 한다면 UIKit에서 만든 후에 SwiftUI로 감싸서 사용했어야 했습니다.
iOS 16에서는 SwiftUI에서도 Alert에 TextField (혹은 Secure Field)를 넣을 수 있습니다. 기존 alert method의 action의 자리에 TextField를 넣어주면 됩니다. 아래 정의와 예시에 나온대로 원래 action은 Button을 위한 parameter 였는데요. 이번 업데이트를 통해서 TextField를 넣을 수 있게 된 것이죠. 하지만 아무 View나 전부 들어갈 수 있는 것은 아닙니다. 실제로 Toggle이나 Menu, 심지어 Text 같은 것을 넣어도 Alert에 나타나지 않습니다.
struct AlertWithTextField: View {
@State private var showAlert = false
@State private var name = "Teddy"
var body: some View {
VStack {
Text(name)
Button("이름 수정하기") {
showAlert.toggle()
}
.alert("이름 수정", isPresented: $showAlert) {
TextField(name, text: $name)
Button("OK", action: {})
} message: {
Text("수정할 이름을 입력해주세요")
}
}
}
}