如何从第二个视图返回到根视图?

3
我已经使用2个模态转场在苹果手表故事板中将3个视图(根视图、第1个视图、第2个视图)连接在一起。
1)在根视图中:一旦按下“保存”按钮,第一个模态视图将显示。
2)在第一个模态视图中:一旦按下“500”按钮,第二个模态视图将显示。(我可以按取消按钮返回到根视图)
3)在第二个模态视图中:一旦按下“保存”按钮,我想回到根视图。怎么做?
--> 我不想按两次取消按钮返回到根视图。 imgae

使用[self.navigationController popToRootViewControllerAnimated:YES]; - Anbu.Karthik
你展示模态视图以便无法使用popToRootViewController,但可以使用Unwind Segues。http://spin.atomicobject.com/2014/10/25/ios-unwind-segues/ - Huy Nghia
嗨@Anbu.Karthik,我在第二个模态视图“SavedInterfaceController”中添加了self.popToRootController(),该视图的类型为WKInterfaceController。但是在按下“已保存”按钮后,它仍然停留在第二个模态视图上。顺便说一句,我正在使用模态segue而不是推送segue。请帮帮我。@.@ - user1872384
@user1872384 很抱歉,我不了解WacthKit的任何信息 :( - Huy Nghia
@user1872384 -- 你能不能说得更清楚一些,我也不是在使用Watch Kit,但我肯定会支持你。 - Anbu.Karthik
显示剩余5条评论
2个回答

1
我发现只有当你的“注销”屏幕真正成为根目录时,这才是可能的。如果不是(因为之前有其他屏幕),那么你就不能使用下面的方法。
我所说的方法是:
[WKInterfaceController reloadRootControllersWithNames:(NSArray *) contexts:(NSArray *)]

当您从第二个模态窗口的“保存”按钮捕获操作时,请调用此方法。它将使用第二个数组的上下文(如果您希望根控制器意识到它是从第二个模态而不是因为应用程序首次打开而被调用,则在此处提供对象)加载您在第一个数组中指定的页面(在这里必须添加根控制器的标识符)。希望这可以帮助您。

忘了提一下,如果在这个屏幕之前有其他屏幕,并且您无法使用此方法(因为它会破坏导航并“忘记”调用的那些屏幕),则应该隐藏第一个模态框中的元素并重新加载UI,而不是打开第二个模态框。因此,当您按取消时,您将返回到“注销”屏幕。如果这篇文章对您有帮助,请将其标记为正确答案! - jastrada

0

我已经实现了您的情境。

1. Use push pushControllerWithName: method to push to another view controller to navigate. Do not use present or modal to navigate to another view controller. 
2. Create one NSNotificationCenter observer in your Watch first controller. 
3. Create and assign WatchSession delegate in WCWatchDelegate. 
4. Whenever watchsession delegate calls, post notification center.
5. Now, final step is whenever your notification method calls, use [self popToRootController]; and you will be redirect on your root controller.

I have followed these step and i'm succeeded. Accept Answer if it works for you. Dont forget to vote up!!!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接