Esegui il codice durante l'avvio dell'app in SwiftUI 2.0
Aug 22 2020
Nella struttura della mia app, ho una piccola funzione che controlla se l'utente ha già aperto l'app. In caso contrario, mostra una vista di onboarding con alcune domande. In questo momento, ho solo un .onAppear collegato sia a Onboarding che a ContentView per eseguire la funzione, ma quando avvii l'app, la vista Onboarding lampeggia per un secondo veloce. Come posso eseguire la funzione durante l'avvio, in modo che la vista Onboarding non lampeggi per un secondo?
Ecco la struttura della mia app:
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
}
}
Risposte
6 Asperi Aug 21 2020 at 22:44
Puoi farlo in init
, è un punto di ingresso molto presto, quindi puoi semplicemente inizializzare la proprietà:
@main
struct TestApp: App {
private var hasOnboarded: Bool
init() {
let defaults = UserDefaults.standard
hasOnboarded = defaults.bool(forKey: "hasOnboarded")
}
// ... other code
}