使用 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()

使用相机意图时未调用 OnActivityResult()?

使用动态链接首次下载后更新应用程序时未调用 openURL 方法