2017-02-26 46 views
1

我有一個導航控制器,顯示了視圖控制器編程。現在我試圖回到導航控制器的根視圖控制器,如果有錯誤,但我似乎無法回到那裏。流行回從根的viewController的ViewController的是使用編程

我正在使用的頁面呈現正是如此:

let vc = self.storyboard!.instantiateViewController(withIdentifier: page) 
self.show(vc, sender: self) 

如果我嘗試回去正式:

self.navigationController?.popViewController(animated: true) 

我得到一個警告粗暴:

表達鍵入的UIViewController是未使用的

我不想使用塞格斯這裏...

+0

當你調用popViewController,你哪裏實例相同的VC? –

+0

查看下面的答案。如果有效,請接受 – iAviator

+0

即使您的第一條抑制警告的評論也很有效。有條件的檢查甚至更好。謝謝 – WanderingScouse

回答

1

self.To避免使用警告:

_ = self.navigationController?.popViewController(animated: true)

要彈回到根視圖控制器使用: -

if let self.navigationController = self.window?.rootViewController as? UINavigationController { 
    navigationController.popToRootViewControllerAnimated(true) 
} 
0

其實這不是一個糟糕的警告。編輯器指示/突出顯示您未使用從導航堆棧彈出的視圖控制器。如果您不想使用彈出視圖控制器,您可以忽略它們。

以下是導航控制器提供彈出操作的一些方法(函數)。他們從導航堆棧中返回可選的UIViewController(intance),它被彈出。

open func popViewController(animated: Bool) -> UIViewController? // Returns the popped controller. 

    open func popToViewController(_ viewController: UIViewController, animated: Bool) -> [UIViewController]? // Pops view controllers until the one specified is on top. Returns the popped controllers. 

    open func popToRootViewController(animated: Bool) -> [UIViewController]? 

下面是示例代碼,如何使用它:

if let navigation = self.window?.rootViewController as? UINavigationController { 
    navigation.popToRootViewControllerAnimated(true) 
} 
相關問題