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

时间:2015-08-17 12:15:13

标签: ios navigation watchkit apple-watch

Apple Watch编程指南指出,您无法混合基于页面的导航和分层导航。

我的Apple Watch应用程序以分层导航中的Maininterfacecontroller开始,根据相关数据的可用性,它使用reloadRootControllersWithNames的{​​{1}}启动基于页面的导航。

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

1 个答案:

答案 0 :(得分:1)

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

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

最有可能出现这种混乱,因为当您第一次加载基于页面的界面时,您已加载了单个界面控制器。初始设置中只有一个页面,可以格式化为包含多个按钮,因此看起来像层次结构控制器一样,你得出的结论是,当你不是

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