我遇到了我的应用调用的问题:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions [UIApplicationLaunchOptionsKey: Any]?) -> Bool
然后执行操作,最后调用func applicationDidEnterBackground
。
该应用程序实际上包含在应用程序堆栈中。我可以切换回模拟器的主屏幕,再回到程序。不幸的是,函数viewDidLoad
从未被调用。
如何调试发生的情况以及应用程序在哪里“停止”并调用后台功能而不是活动的?
谢谢。
答案 0 :(得分:0)
您的应用可能进入后台的原因有多种,从“按下”模拟器/设备上的主页按钮到实际calling the suspend method。
一些调试解决方案:检入Xcode调试导航器,添加异常断点,使用工具调查可疑行为。
答案 1 :(得分:0)
当应用程序返回到前台时,永远不会调用ViewDidLoad。您必须设置一个观察器,该观察器在应用程序回到前台时触发,然后在ViewController中执行您想做的事情。
NotificationCenter.default.addObserver(self,
selector: #selector(funcCalledWhenReturningInForeground),
name: .UIApplicationWillEnterForeground,
object: nil)
或者您可以将其用作观察者的名称(就像viewWillAppear和viewDidAppear逻辑一样)
UIApplicationDidBecomeActive
内幕,要知道应用何时在后台运行,您可以使用
UIApplicationWillResignActive
答案 2 :(得分:0)
为了检测在ViewController中在后台/前景中输入的应用
在您的视图控制器中添加观察者
例子
NSNotification.Name.UIApplicationWillResignActive