在 applicationWillTerminate() 中找出应用程序在哪个视图上终止
Posted
技术标签:
【中文标题】在 applicationWillTerminate() 中找出应用程序在哪个视图上终止【英文标题】:Find out which view the application was terminated on in applicationWillTerminate() 【发布时间】:2021-08-06 22:00:52 【问题描述】:假设我的应用中有多个屏幕: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
【讨论】:
以上是关于在 applicationWillTerminate() 中找出应用程序在哪个视图上终止的主要内容,如果未能解决你的问题,请参考以下文章
在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?