使用 WatchOS 应用程序时未调用 viewDidLoad
Posted
技术标签:
【中文标题】使用 WatchOS 应用程序时未调用 viewDidLoad【英文标题】:viewDidLoad not called when using a WatchOS App 【发布时间】:2015-09-11 13:12:28 【问题描述】:我正在完成一个 watchOS 应用程序,但是当 watchApp 发出请求时,我很难让 iPhone 应用程序工作。
似乎应用程序在后台加载来自 Apple Watch 的数据请求。但是,如果我随后(在应用程序仍在后台运行的时间内)打开应用程序,视图正在显示,但没有通过调用 viewDidLoad 等正常启动。
在这种情况下,当我已经通过 Apple Watch 等外部进程加载时启动应用程序时,如何正确加载视图?
我需要初始化视图的原因是因为它是由数据库填充的。
[编辑:] 该应用程序是一个普通的故事板应用程序。初始视图控制器是一个 UINavigationController,它将 UIViewController 作为 rootViewController 加载。
这是由 Ap 设置中的规范“自动”完成的。我的感觉是,因为故事板似乎是在后台加载的,所以 RootViewController 类由于某种原因没有加载。
【问题讨论】:
我知道这是一种解决方法,但是使用 applicationDidBecomeActive 或 applicationWillEnterForeground 怎么样?问题是那些会被调用。 确实如此。然后我想发送一个通知,但我无法初始化它们。 您应该提供有关导航架构的更多信息。比如你如何初始化你的视图控制器,你如何在屏幕上展示它等等。 我添加了一些关于视图控制器结构的信息。 你试过检查 viewWillAppear 吗? 【参考方案1】:实际上调用了 ViewDidLoad 过程,但如果 App 来自后台,则不会调用 viewDidAppear。因此可以在 viewDidLoad 中创建一个通知监听器来监听应用程序是否退出后台模式。
【讨论】:
以上是关于使用 WatchOS 应用程序时未调用 viewDidLoad的主要内容,如果未能解决你的问题,请参考以下文章
WatchOS 2.0:WCSessionDelegate 没有被调用(在模拟器中)
使用 MPRemoteCommandCenter 时未调用播放/暂停回调
在越狱设备上使用后台程序时未调用 UIApplicationDelegate
在两个应用程序之间使用 AIDL 时未调用 onServiceConnected()