在 applicationWillTerminate() 中找出应用程序在哪个视图上终止

Posted

技术标签:

【中文标题】在 applicationWillTerminate() 中找出应用程序在哪个视图上终止【英文标题】:Find out which view the application was terminated on in applicationWillTerminate() 【发布时间】:2021-08-06 22:00:52 【问题描述】:

假设我的应用中有多个屏幕:View1View2 等。

如果用户在某个屏幕上,比如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
    

【讨论】:

以上是关于在 applicationWillTerminate() 中找出应用程序在哪个视图上终止的主要内容,如果未能解决你的问题,请参考以下文章

秋的潇洒在啥?在啥在啥?

上传的数据在云端的怎么查看,保存在啥位置?

在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?

存储在 plist 中的数据在模拟器中有效,但在设备中无效

如何在保存在 Mongoose (ExpressJS) 之前在模型中格式化数据

如何在保存在 Mongoose (ExpressJS) 之前在模型中格式化数据