2017-08-10 50 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