2017-08-10 23 views
0

我一直在试图弄清楚为什么第一次我推到一个WatchKit视图,它是didAppear()运行的,但是第二次,在弹出它之后,它完成了push命令,然后在没有运行didAppear()之后崩溃。WKInterfaceController pop()删除弹出的控制器吗?

我一直在使用:

WKExtension.shared().rootInterfaceController.pop() 

返回到上一个视图。这是删除弹出的视图?如果有,是否有办法保存视图,以便我可以再次推送它? pop()不返回视图。

回答

0

问题是您弹出(从导航堆栈中移除)根接口控制器而不是当前的接口控制器。您基本上正在尝试删除所有其他控制器都从其推入的接口控制器。想象一下,如果你正在建造一座积木塔,而不是从顶部移除一块砖,那么你将底部的一块砖移走了。当然你的塔会崩溃。

根据您实际需要达到的要求,您需要在当前的接口控制器中调用self.pop()self.popToRootController()。如果导航堆栈中有两个以上的接口控制器,前者将回到前一个控制器,而后者将始终返回到根接口控制器,而不管堆栈中有多少个接口控制器。

+0

终于有机会检查这个,并在将弹出命令移动到视图的控制器(self.pop()与需要弹出的控制器),而不是使用根界面控制器运行后,它仍然像它一样崩溃之前。根据文档pop()弹出当前视图(导航堆栈的顶部)而不是调用它的视图,因此无论是使用根控制器还是当前控制器弹出该视图都不重要。 – sn8wman

+0

请在您的问题中包含更多代码,以查看确切的问题。此外,“它崩溃”不够具体,请包括您收到的确切错误消息。 –

+0

问题不在流行。我确信这是因为它不断突破,但只是测试推,弹出,推动工作正常,所以它在别的地方。没有错误信息,但在nopl执行过程中出现断点,根据我的理解,这看起来没有任何意义,但实际上并没有做任何事情。如果我找出它的位置并且需要更多的帮助,我会开始一个新的问题,因为这个问题是错误的。 – sn8wman