Узнайте, какое приложение просмотра завершилось с помощью 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
    }
}
Другие вопросы по тегам