Узнайте, какое приложение просмотра завершилось с помощью applicationWillTerminate()
Предположим, у меня в приложении несколько экранов.
View1
,
View2
, ..., так далее.
Если пользователь находится на определенном экране, скажем
View3
, и приложение завершает работу, потому что пользователь вышел из приложения или чего-то подобного. я знаю
applicationWillTerminate(_ application: UIApplication)
вызовет, но как мне узнать, в каком представлении находился пользователь до завершения работы приложения?
Мне нужна такая функциональность:
func applicationWillTerminate(_ application: UIApplication) {
let viewUserIsOn = getViewUserWasOnWhenAppQuit()
switch viewUserIsOn{
case .view1:
doThisIfOnView1()
case .view2:
doThisIfOnView2()
default:
doNothing()
}
}
1 ответ
Если представления появляются последовательно, вы можете сделать что-то вроде этого:
class Settings: ObservableObject {
static let shared = Settings()
@Published var viewType: ViewType!
}
enum ViewType {
case view1, view2, view3
}
struct View1: View {
@ObservedObject var settings = Settings.shared
var body: some View {
[...]
.onAppear {
settings.viewType = .view1
}
}
}
struct View2: View {
@ObservedObject var settings = Settings.shared
var body: some View {
[...]
.onAppear {
settings.viewType = .view2
}
}
}
// same for View 3
func applicationWillTerminate(_ application: UIApplication) {
switch Settings.shared.viewType {
case .view1: // View 1 was displayed
case .view2: // View 2 was displayed
case .view3: // View 3 was displayed
}
}