AppDelegate вернулся
Больше нет необходимости явно создавать AppDelegate с новым жизненным циклом SwiftUI. Однако могут быть ситуации, когда AppDelegate все еще может потребоваться. Этот пост объясняет, как.
Этот пост является продолжением моего первого поста Как я запускаю проект SwiftUI».
При создании приложения для серии руководств Программирование дронов DJI я столкнулся со странной проблемой.
Мое приложение вело себя недетерминировано, кошмар каждого программиста. Иногда это работало так, как ожидалось, а иногда нет. Я объяснил все детали в этом посте на Stackoverflow.
Я мог только заставить его снова представить «старый добрый» AppDelegate
.
Итак, всякий раз, когда возникает необходимость использовать AppDelegate
в вашем новом блестящем приложении SwiftUI, см. план ниже.
Не стесняйтесь угостить меня кофе, если вам понравился этот пост.
import SwiftUI
class AppDelegate: UIResponder, UIApplicationDelegate {
var someClass = SomeClass()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
someClass.doSomethingThatWouldNotWorkWithoutTheAppDelegate()
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")
}
}
}
}