swiftUI는 state 방식이라서 onAppear에서 직접 Alert 띄우지는 못하고
뷰에서 미리 Alert 만들어 놓고 state 상태값을 변경해서 Alert을 띄울 수 있습니다.
import SwiftUI
import WebKit
struct IntroView: View {
@State var showAlert = false
@State var alertTitle: String = ""
@State var alertMsg: String = ""
var body: some View {
VStack {
}
.alert(isPresented: $showAlert) {
Alert(title: Text(alertTitle), message: Text(alertMsg), dismissButton: .default(Text("확인"), action: {
exit(1)
}))
}
.onAppear {
startMain()
}
}
func startMain() {
// HTTP 요청
...
// HTTP 요청 결과 처리
session.dataTask(with: request) { data, response, error in
// HTTP 응답코드가 400번대, 500번대의 경우 리턴
if let response = response as? HTTPURLResponse {
if response.statusCode >= 400 && response.statusCode <= 599 {
self.alertTitle = "버전"
self.alertMsg = "서버에서 버전정보를 확인하는데 실패 하였습니다.\n관리자에게 문의해 주시기 바랍니다.\n\n응답코드 : \(response.statusCode)"
self.showAlert = true
}
}
}
}
}
참고로 이렇게는 안됩니다(X)
처음에 왜 안되나 한참 해맸는데 바드한테 물어보니 알려줍니다 ㅎㅎ
import SwiftUI
import WebKit
struct IntroView: View {
var body: some View {
VStack {
}
.onAppear {
startMain()
}
}
func startMain() {
// HTTP 요청
...
// HTTP 요청 결과 처리
session.dataTask(with: request) { data, response, error in
// HTTP 응답코드가 400번대, 500번대의 경우 리턴
if let response = response as? HTTPURLResponse {
if response.statusCode >= 400 && response.statusCode <= 599 {
Alert(title: Text("버전"), message: Text("서버에서 버전정보를 확인하는데 실패 하였습니다."), dismissButton: .default(Text("확인"), action: {
exit(1)
}))
}
}
}
}
}
'개발 - iOS SwiftUI' 카테고리의 다른 글
iOS SwiftUI Xcode Firebase 패키지 추가 방법 (0) | 2023.10.19 |
---|---|
iOS SwiftUI HTTP POST 요청 후 JSON 응답 파싱 예제 (0) | 2023.10.18 |
iOS SwiftUI onAppear에서 뷰 화면 이동 예제 (0) | 2023.10.18 |
iOS SwiftUI HTTP 요청 dataTask 동기 처리 예제 (0) | 2023.10.17 |
iOS SwiftUI HTTP GET 요청 후 JSON 응답 파싱 예제 (0) | 2023.10.16 |