SwiftUI/Alerts and action sheets

How to show multiple alerts in a single view

까칠코더 2019. 11. 22. 16:24
반응형

 

Hacking with Swift 사이트의 강좌 번역본입니다.

 

[원문 : https://www.hackingwithswift.com/quick-start/swiftui/how-to-show-multiple-alerts-in-a-single-view]

 

How to show multiple alerts in a single view

 

SwiftUI는 단일 경고창을 보여주는 것을 비교적 쉽게 만들수 있지만, 단일 뷰에 2개 이상의 경고창을 보여주려는 경우에는 까다롭습니다 - 예를들어, 하나의 경고창은 동작하지만 다른 것은 동작하지 않습니다.

 

이를 해결하기 위해서, 각 뷰에 하나의 이상의 alert() modifier를 붙여야 합니다. 제한하는 것으로 들리지만, 기억하세요: 경고창을 동일한 뷰에 붙일 필요가 없습니다 - 어디에든 붙일 수 있습니다. 사실상, 보여주는 것(예를 들어 버튼)에 직접 붙여넣는 것이 가장 좋은 작업이라는 것을 알수 있을 것입니다.

 

예제로, 각각 경고창을 보여주는 것을 제어하는 2개의 @State properties를 정의하는 코드를 작성할 수 있습니다. 동일한 VStack alert()modifiers 모두 붙여넣는 대신에, 경고창을 보여줄 책임이 있는 버튼에 각각 붙여넣습니다. 

struct ContentView: View {
    @State private var showingAlert1 = false
    @State private var showingAlert2 = false

    var body: some View {
        VStack {
            Button("Show 1") {
                self.showingAlert1 = true
            }
            .alert(isPresented: $showingAlert1) {
                Alert(title: Text("One"), message: nil, dismissButton: .cancel())
            }

            Button("Show 2") {
                self.showingAlert2 = true
            }
            .alert(isPresented: $showingAlert2) {
                Alert(title: Text("Two"), message: nil, dismissButton: .cancel())
            }
        }
    }
}

 

alert() modifiers 모두 *VStack으로 이동시키는 경우에, 하나만 동작하게 되는 것을 알게 될 것이며, 위의 접근법이 유용한 이유입니다.

반응형