SwiftUI2.0でアプリの起動中にコードを実行する
Aug 22 2020
私のアプリ構造体には、ユーザーが以前にアプリを開いたことがあるかどうかを確認する小さな関数があります。そうでない場合は、いくつかの質問を含むオンボーディングビューが表示されます。現在、関数を実行するためにOnboardingとContentViewの両方に.onAppearをアタッチしていますが、アプリを起動すると、Onboardingビューが一瞬点滅します。起動中に関数を実行して、オンボーディングビューが1秒間点滅しないようにするにはどうすればよいですか?
これが私のアプリの構造体です:
import SwiftUI
@main
struct TestApp: App {
@State private var hasOnboarded = false
var body: some Scene {
WindowGroup {
if hasOnboarded {
ContentView(hasOnboarded: $hasOnboarded) .onAppear(perform: checkOnboarding) } else { Onboarding(hasOnboarded: $hasOnboarded)
.onAppear(perform: checkOnboarding)
}
}
}
func checkOnboarding() {
let defaults = UserDefaults.standard
let onboarded = defaults.bool(forKey: "hasOnboarded")
hasOnboarded = onboarded
}
}
回答
6 Asperi Aug 21 2020 at 22:44
でそれを行うことができますinit
。これは非常に初期のエントリポイントであるため、プロパティを初期化するだけです。
@main
struct TestApp: App {
private var hasOnboarded: Bool
init() {
let defaults = UserDefaults.standard
hasOnboarded = defaults.bool(forKey: "hasOnboarded")
}
// ... other code
}