반응형
@State 를 이용하여 화면 갱신을 알아 보았다.
그럼 iOS에서 많이 사용하는 UserDefaults값을 이용한 화면 갱신을 손쉽게 할 수 있을까? 이럴때 사용하는 것이 @AppStorage 프로퍼티이다.
다만 iOS 14 이상에서만 사용이 가능하다!!
예전에 살펴본 @State 변수를 통한 화면 이동 부분을 @AppStorage 사용해서 구현하면 다음과 같다.
@AppStorage 프로퍼티 래퍼를 사용하면, UserDefaults 를 마치 SwiftUI @State 처럼 사용할 수 있게 되는것이다.
즉 @State 변수 값을 바꾸듯 값을 바꾸면, @AppStorage 프로퍼티 래퍼가 UserDefaults의 바뀐 값을 처리해주고, 화면을 새로 갱신해준다.
@AppStorage 프로퍼티는 화면 갱신을 구분짓는 UserDefaults 변수에 사용하면 효과적일 듯 하다.
(로그인 여부에 따른 처리 로직 등등...)
import SwiftUI
struct SplashView: View {
@AppStorage("isGoMain") var isGoMain : Bool = UserDefaults.standard.bool(forKey: "isGoMain")
var body: some View {
// @AppStorage 프로퍼티 변수 값 변경으로 SplashView의 body 부분이 다시 호출되어 MainView를 호출한다.
if isGoMain {
MainView()
} else {
VStack {
Spacer().frame(height: 189)
Image("logo")
.resizable()
.scaledToFit()
.frame(width: 198, height: 35)
Spacer()
}
// 화면이 보여질때 호출되는 함수 - 최초 View 진입에서도 호출된다.
.onAppear {
// 몇 초 뒤 또는 기타 액션을 수행하는 로직을 넣고 조건이 충족될때 isGoMain 변수값을 변경하면 SplashView의 body 부분이 다시 호출되는 효과가 발생된다.
isGoMain = true
}
}
}
}
struct SplashView_Previews: PreviewProvider {
static var previews: some View {
SplashView()
}
}
반응형
'개발' 카테고리의 다른 글
22년 6월 30일 이후 앱 심사 시 Sign in with Apple 적용 대상 앱에 회원탈퇴 시 revoke api 적용 지침 가이드 (0) | 2022.06.28 |
---|---|
SwiftUI) 시스템 Alert 뛰우기 및 사용하면서 느낀점들? (0) | 2022.05.12 |
SwiftUI) @State 변수를 id(_)에 적용하여 화면 갱신하기! (0) | 2022.05.10 |
SwiftUI) @State 변수란?, View 라이프사이클? - 사용하다 느낀 정의? (0) | 2022.05.03 |
Swift WKWebView 입력폼에서 더 빠른 로그인을 위한 ID, PW 자동 완성 알아보기! (0) | 2021.10.14 |