2017-02-26 10 views
1

私はプログラムでビューコントローラを表示するナビゲーションコントローラを持っています。今私はエラーがある場合、ナビゲーションコントローラのルートビューコントローラに戻ろうとしていますが、私はそこに戻っているようです。プログラムで使用されたviewControllerからViewControllerをルートにポップアップ

私が働いているページは以下のようなものを提示している:

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

と私は正式に戻ってしようとした場合:

の式:

self.navigationController?.popViewController(animated: true) 

私は失礼警告を受けますタイプUIViewControllerは未使用です

私は

+0

? –

+0

下記の確認の答え。もしうまくいくなら、受け入れてください – iAviator

+0

警告を抑制した最初のコメントさえもうまくいった。条件付きチェックはさらに優れています。ありがとう – WanderingScouse

答えて

1

使用を警告避けるself.To ...ここseguesを使用したくない:

_ = 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) 
} 
あなたがpopViewController、あなたがインスタンス化している同じVCを呼んでいる
関連する問題