SwiftUI에서 경고를 사용하는 방법

17440 단어 iosappleswiftuiswift
경고는 iOS 애플리케이션의 가장 중요한 구성 요소 중 하나입니다.만약 파일을 다운로드하거나 모든 것이 정상적인지 확인하는 데 더 많은 시간이 필요하다면, 우리는 그것들을 사용하여 사용자에게 오류를 알릴 수 있다.또 다른 경보 용례는 프로그램 사용자가 어떤 내용을 삭제하거나 전신환을 하고 싶은지 물어보는 것이다.
SwiftUI에는 Alert 구성 요소가 있으며 여러 가지 방법으로 사용할 수 있습니다.어디 보자.

경계의


SwiftUI를 사용하여 경고를 표시하는 가장 간단한 방법 중 하나는 부분 상태 변수를 사용하여 경고가 표시되어야 하는지 여부를 표시하는 것입니다.다음에 보기 수정기 .alert 를 추가해야 합니다. 보기 Alert 를 되돌려야 합니다.
@State private var showAlert = false

var body: some View {
  VStack {
    Button("Show alert") {
      showAlert = true
    }
    .alert(isPresented: $showAlert) {
      Alert(title: Text("Title"))
    }
  }
}
이전 예에서 우리는 showAlert 상태 변수 유지bool 값을 보았다.처음에는 경보가 보이지 않았다. 그것은 false 였다.단추를 눌렀을 때, 상태 변수를 true 로 변경해야 합니다. 이것은 경보를 터치해서 화면에 볼 수 있도록 합니다.
Alert with SwiftUI
기본적으로 경보는 경보를 해제하기 위한 확인 단추가 있는 것을 볼 수 있다.이 글 뒤에 더 많은 단추를 추가하려고 시도합니다.Alert 보기에 대해 우리는 title뿐만 아니라 message 필드도 제공할 수 있다. 이 필드는 하나하나이다.
Alert(title: Text("Title"),
      message: Text("Message"))
Alert with message

식별 가능한 항목에 대한 경고


SwiftUI에서 경고를 표시하는 또 다른 방법은 인식 가능한 뷰 상태 변수를 사용하는 것입니다.이 방법을 사용하면 SwiftUI 레이아웃 시스템에서 이 상태 변수의 값을 전달하고 경고 제목, 메시지 또는 이벤트 단추를 그 내용으로 채울 수 있습니다.이 프로젝트가 변경되면 SwiftUI 레이아웃 시스템은 새 값으로 경보를 업데이트합니다. 이것은 매우 간결한 기능입니다. 우리는 무료로 얻을 수 있습니다.
코드에서 그것을 어떻게 실현하는지 봅시다.우선, 우리는 Identifiable 협의를 실현하는 대상을 설정해야 한다.사용자 구조를 만듭니다.우리는 id 상수를 만들어야 한다. 우리는 UUID 구조를 사용하여 전역적으로 유일한 값을 표시하고 그들 사이의 값을 식별할 수 있다.
struct User: Identifiable {
  let id: UUID
  let name: String
}
이제 SwiftUI 섹션으로 이동하여 보기를 만듭니다.
@State private var user: User?

var body: some View {
  VStack {
    Button("Show alert") {
      user = User(id: UUID(), name: "Kristaps")
    }
    .alert(item: $user) { user in
      Alert(title: Text("Hello, \(user.name)!"))
    }
  }
}
주의해야 할 것은view state 변수는 선택할 수 있습니다. 왜냐하면 SwiftUI가 경보를 화면에 볼 수 있는지 여부를 결정하기 때문입니다..alert 보기 수정기를 사용할 때, 입력 변수가 있는 클립이 있습니다. 이 변수는 상태 변수의 현재 값입니다.이렇게 하면 우리는 경보 제목을 채울 수 있다.
Alert with identifiable item

경고 버튼


이제 SwiftUI를 사용하여 화면에 경고를 표시하는 두 가지 방법을 알아냈습니다.그러나 어떻게 여러 개의 단추를 표시하고 사용자 정의합니까?
경보에 단추를 추가하려면 Alert 초기값 설정 항목을 사용하여 Dismise 단추를 지정하거나 Alert 초기값 설정 항목을 사용하여 초기화.alert 주 단추와 보조 단추를 제공할 수 있습니다.
목록에서 특정 내용을 삭제할지 묻는 확인 경보를 만듭니다.
@State private var showAlert = false

var body: some View {
  VStack {
    Button("Show alert") {
      showAlert = true
    }
    .alert(isPresented: $showAlert) {
      Alert(title: Text("Do you want to delete this item?"),
        primaryButton: .cancel(),
        secondaryButton: .destructive(Text("Delete")) {
          print("Delete item")
        }
      )
    }
  }
}
비밀번호 풀래요.경보를 표시하기 위해서 우리가 사용하는 첫 번째 방법은 상태 변수를 보는 것입니다. 이 변수는 우리가 언제 화면에 경보를 표시하기를 원하는지 표시합니다.
구조Alert가 표시한 .alert 보기 수식자에서 우리는 경보 단추에 대한 정보를 제공하기 위해 서로 다른 초기값 설정 항목을 사용한 것을 보았다.이것은 경보 조작을 나타내는 특정button이다.SwiftUI에는
  • 위약;
  • 취소 - 시스템에서 제공한 라벨을 사용하여 취소를 나타낸다.
  • cancel - 상기와 유사하지만 사용자 정의 라벨이 있음;
  • 손상 - 삭제와 같은 손상된 작업을 나타냅니다.
  • 사용자가 목록에서 항목을 취소하거나 삭제할 수 있기 때문에 경고 확인 및 무시 버튼 스타일을 사용했습니다.
    Alert with buttons

    여러 경고 표시


    한 보기에 여러 개의 경보를 표시하려면 두 가지 방법이 있다.

    상태 변수 사용


    첫 번째는 경보마다 보기 상태 변수를 보존하는 것입니다.그러나 전체 보기가 아닌 .alert 수식자를 추가해야 하지만, 예를 들어 경보를 호출하는 단추를 추가할 수 있습니다.만약 우리가 하나씩 두 개의 Identifiable 수식자를 추가한다면, SwiftUI 레이아웃 엔진은 첫 번째만 보일 것입니다.
    @State var firstAlertShown = false
    @State var secondAlertShown = false
    
    var body: some View {
      VStack(spacing: 50) {
        Button("Show first alert") {
          firstAlertShown = true
        }
        .alert(isPresented: $firstAlertShown) {
          Alert(title: Text("First alert"))
        }
    
        Button("Show second alert") {
          secondAlertShown = true
        }
        .alert(isPresented: $secondAlertShown) {
          Alert(title: Text("Second alert"))
        }
      }
    }
    

    인식 가능한 상태 변수 사용


    나는 두 번째 방법이 더 좋다. 그것이 더 안전하다.우선, 우리는 AlertIdentifier 협의에 부합되는 경보를 표시하는 구조를 세워야 한다.이 구조에서, 우리는 특정한 경보 보기의 모든 경보 유형을 표시하고 되돌려 주기를 원하는 로컬 매거 유형을 가지고 있다.이상적인 상황에서 그것은 분리되어야 하지만, 이 예를 보여주기 위해서 나는 그것을 이렇게 유지한다.
    struct AlertIdentifier: Identifiable {
      enum ActiveAlert {
        case first
        case second
    
        var alertView: Alert {
          switch self {
          case .first:
            return Alert(title: Text("First alert"))
          case .second:
            return Alert(title: Text("Second alert"))
          }
        }
      }
    
      var id: ActiveAlert
    }
    
    그런 다음 SwiftUI 보기를 만들어 사용하겠습니다.경보를 호출하고 구성할 때, 우리의 보기는 새로운 alertView 유형의 국부 상태 변수를 사용할 것입니다.이전에 ActiveAlert 매거진에 구축된 컴퓨터 .alert 속성과 함께 사용할 수 있습니다.
    struct MultipleAlertsViewIdentifiable: View {
      @State var alert: AlertIdentifier?
    
      var body: some View {
        VStack(spacing: 50) {
          Button("Show first alert") {
            alert = AlertIdentifier(id: .first)
          }
    
          Button("Show second alert") {
            alert = AlertIdentifier(id: .second)
          }
        }
        .alert(item: $alert) {
          $0.id.alertView
        }
      }
    }
    
    여기에는 해제해야 할 부분이 많지만, 중요한 것은 같은 보기에서 여러 개의 경보를 표시하는 것이 안전하고, 각 경보에 상태 변수를 추가할 필요가 없다는 것이다.이 방법을 사용하면 사용자에게 경보가 표시될지 걱정할 필요가 없습니다. 왜냐하면 보기 수정기가 보기 자체 주위에 분산되어 있지 않기 때문입니다.

    TL;박사 01 명


    응용 프로그램 사용자에게 알림을 표시하거나 사용자 인터페이스에 대한 확인을 요청하는 경보를 표시합니다.두 가지 방법으로 SwiftUI를 사용하여 경고를 표시할 수 있습니다.첫 번째 방법은 상태 변수를 사용하여 경보가 보이는지 여부를 표시하는 것이다.두 번째는 경고 제목, 메시지 및 버튼을 채우는 데 사용할 수 있는 식별 가능한 상태 변수를 사용합니다.
    우리는 경보를 위해 여러 종류의 단추를 설정할 수 있다.두 개 이상을 보여주려면 SwiftUI 양식을 사용해야 합니다.
    같은 보기에서 여러 개의 경보를 표시하려면 여러 개의 보기 상태 변수를 사용하거나 경보 자체를 만드는 식별 구조를 사용해서 실현할 수 있습니다.

    링크

  • Sample code
  • Alert official documentation
  • Alert Button official documentation
  • How to show an alert
  • Working with Identifiable items in SwiftUI
  • SwiftUI: Alert
  • 좋은 웹페이지 즐겨찾기