从 watchkit 扩展中基于页面的导航开始分层导航

Posted

技术标签:

【中文标题】从 watchkit 扩展中基于页面的导航开始分层导航【英文标题】:Start hierarchical navigation from page based navigation in watchkit extension 【发布时间】:2015-11-10 01:48:47 【问题描述】:

Apple Watch 编程指南指出不能混合使用基于页面的导航和分层导航。

我的 Apple Watch 应用从分层导航中的主界面控制器开始,根据相关数据的可用性,它使用 reloadRootControllersWithNamesWKInterfaceController 启动基于页面的导航。

现在在基于页面的导航中,当我没有要显示的相关数据时,我想结束基于页面的导航并再次使用Maininterfacecontroller 开始分层导航。

【问题讨论】:

【参考方案1】:

正如Apple's Interface Navigation documentation 所说,基于页面的导航和分层导航是相互排斥的。您将此解释为意味着您不能同时交错它们,但这不是Apple所说的。相反,您必须为您的 WatchKit 应用程序确定其中一种基本导航样式,这将是该应用程序构建的基本导航样式。您不能以编程方式更改它。 (解决此问题的一种方法是,您可以在基本导航样式之上显示模态视图,并且该模态视图可以使用不同的导航样式。)

但是,您的描述表明您实际上并没有像您认为的那样做。 reloadRootControllersWithNames(_:contexts:) 是一种仅在基于页面的界面中可用的方法。因此,您的应用正在做的是使用基于页面的界面启动,然后根据用户选择显示一组特定的页面。

很可能出现这种混淆是因为当您第一次加载基于页面的界面时,您已经加载了一个界面控制器。在您的初始集合中只有一个页面,它可能被格式化为包含许多按钮,因此 看起来 像一个分层控制器,您得出的结论是,您使用的是分层界面类型,而实际上您不是.

鉴于所有情况,要从您的页面返回原始界面控制器,您只需再次调用 reloadRootControllersWithNames(_:contexts:) 并将您启动时使用的原始界面控制器的名称传递给它。

【讨论】:

以上是关于从 watchkit 扩展中基于页面的导航开始分层导航的主要内容,如果未能解决你的问题,请参考以下文章

无法在 WatchKit 扩展(CocoaPods)中使用 Parse 库

如何创建基于页面的 WatchKit 应用程序?

WatchKit Complication:从扩展委托获取复杂数据

为啥从 WatchKit 扩展向 iOS 发送消息并得到回复如此缓慢?

如何在 WatchKit 扩展中计算当前位置

Xcode 6.2 beta 4 是不是使带有页面的 watchKit 接口无法打开推送的接口?