Alert에 TextField 넣기 (iOS 16 ~)

SteadySlower·2023년 6월 20일
0

SwiftUI

목록 보기
48/64

이번 포스팅에서는 Alert에 TextField를 넣는 방법을 알아보겠습니다.

~ iOS 15

iOS 16 이전의 SwiftUI에서는 Alert에 TextField를 넣을 수 없었습니다. 꼭 사용하고자 한다면 UIKit에서 만든 후에 SwiftUI로 감싸서 사용했어야 했습니다.

iOS 16 ~

iOS 16에서는 SwiftUI에서도 Alert에 TextField (혹은 Secure Field)를 넣을 수 있습니다. 기존 alert method의 action의 자리에 TextField를 넣어주면 됩니다. 아래 정의와 예시에 나온대로 원래 action은 Button을 위한 parameter 였는데요. 이번 업데이트를 통해서 TextField를 넣을 수 있게 된 것이죠. 하지만 아무 View나 전부 들어갈 수 있는 것은 아닙니다. 실제로 Toggle이나 Menu, 심지어 Text 같은 것을 넣어도 Alert에 나타나지 않습니다.

Untitled

예시

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("수정할 이름을 입력해주세요")
            }
        }
    }
}

alert with field.gif

profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글