Mit dem neuen Lebenszyklus von SwiftUI musst du nicht mehr explizit einen AppDelegate erstellen. Es kann jedoch immer noch Situationen geben, in denen ein AppDelegate erforderlich ist. Dieser Beitrag erklaert wie.
Dieser Beitrag ist ein Follow-up zu meinem ersten Beitrag “How I Start A SwiftUI Project”.
Beim Erstellen einer App fuer meine Tutorial-Serie “Programming DJI Drones” stiess ich auf ein seltsames Problem.
Meine App verhielt sich indeterministisch - der Albtraum jedes Programmierers. Manchmal funktionierte sie wie erwartet, und manchmal nicht. Ich habe die Details in diesem Beitrag auf Stackoverflow erklaert.
Ich konnte es nur zum Laufen bringen, indem ich den “guten alten” AppDelegate wieder einfuehrte.
Wenn du also einen AppDelegate in deiner neuen SwiftUI-App benoetigst, verwende die folgende Vorlage.
Gerne kannst du mir einen Kaffee ausgeben, wenn dir dieser Beitrag gefallen hat.
import SwiftUI
class AppDelegate: UIResponder, UIApplicationDelegate {
var someClass = SomeClass()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
someClass.doSomethingThatWouldNotWorkBefore()
return true
}
}
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
@Environment(\.scenePhase) private var scenePhase
var body: some Scene {
WindowGroup {
ContentView()
}
.onChange(of: scenePhase) { (newScenePhase) in
switch newScenePhase {
case.active:
print("active")
case.background:
print("background")
case.inactive:
print("inactive")
@unknown default:
print("default")
}
}
}
}