Apple Watch编程指南指出,不能将基于页面的导航和分层导航混为一谈。
我的苹果手表应用程序从分层导航中的主界面控制器开始,根据相关数据的可用性,它使用WKInterfaceController的reloadRootControllersWithNames启动基于页面的导航。
现在在基于页面的导航中,当我没有要显示的相关数据时,我想结束基于页面的导航,并再次开始使用Maininterfacecontroller的分层导航。
发布于 2016-04-02 04:35:01
正如Apple's Interface Navigation documentation所说,基于页面的导航和分层导航是互斥的。你对此的解释是,你不能同时交错它们,但这不是苹果所说的。相反,您必须为您的WatchKit应用程序决定这些基本导航样式之一,这将是该应用程序构建的基本导航样式。您不能通过编程方式对其进行更改。(解决方法之一是,您可以在基本导航样式之上显示一个模式视图,并且该模式视图可以使用不同的导航样式。)
然而,你的描述表明,你实际上并不是在做你认为自己是什么。reloadRootControllersWithNames(_:contexts:)是一种仅在基于页面的界面中可用的方法。因此,您的应用程序正在做的是启动一个基于页面的界面,然后根据用户选择显示一组特定的页面。
最有可能出现这种混乱的原因是,当您第一次加载基于页面的界面时,您加载了单个界面控制器。由于您的初始集合中只有一个页面,它的格式可能会包含多个按钮,因此看起来像一个分层控制器,因此您可以得出结论,您正在使用分层界面类型,而不是这样。
鉴于上述情况,要从页面返回到原始界面控制器,只需再次调用reloadRootControllersWithNames(_:contexts:)并将启动时所用的原始界面控制器的名称传递给它即可。
https://stackoverflow.com/questions/32050141
复制相似问题