• Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Alert View

경고창

버튼일 때 true일때만 alert 창이 나오는 코드 예제

@State private var isShowAlert = false

var body: some View {
  Button("show alert") {
    isShowAlert.toggle()
  }
  .alert(isPresented: $isShowAlert, content: {
    Alert(title: Text("alert"))
  })
}
  • isPresented: Binding<Bool> 타입 이여서 $ 달러 표시 붙여줌

  • 자동으로 값 바뀌게 되어있는 코드임

    • show alert 버튼 누르면 isShowAlert값이 true가 되고, alert 창의 OK 버튼 누르면 다시 false 됨
    • 이렇게 Boolean 변수를 사용하거나 하는 흐름을 이해하자

image

Alert 의 style들

버튼 하나 있고, 두개 있고 하는 스타일들

Alert(title: Text("alert title"), dismissButton: .cancel()) 
//cancel이라는 dismissbutton 설정 (기본으로 내장되어있는 버튼)

버튼을 만들어서 쓴다면? content closure 안에

let primaryButton = Alert.Button.default(Text("Done"))
let secondaryButton = Alert.Button.default(Text("Cancel"))

Alert(title: Text("show alert"), primaryButton: primaryButton, secondaryButton: secondaryButton)

요렇게 하면 이것들중에 어떤걸 return 할건지 명시적으로 표시해라! 라는 에러가 뜬다
Alert 앞에 return 써주면 된다. 빨간줄도 Alert 반환할 것 같으니까 거기에 표시된다 ㅋ

image

버튼에 기능 추가하기 - default(_:action:)

let primaryButton = Alert.Button.default(Text("Done")){
  // 여기에 수행 할 action 코드 작성
}

예를들면…

@State private var selectText = "x"

...

let primaryButton = Alert.Button.default(Text("Done")){
  selectText = "Done"
}

...

Text("\(selectText)")

머 이런 식 ..