2016-11-09 5 views
0

私はタブベースのアプリケーションを持っています。そして、現在のタブのルートにどこからでもユーザーを巻き戻すことが可能かどうか疑問に思います。私のアプリは、このように構築されているいつでもどこからでもViewControllerタブをrootに戻すことができます

: - >(タブ) - > navigationController - TabController> VCなど。

だから私は私のアプリでは、タブ4の上に押すことを言うことができます。今私は2つのビューコントローラーを掘り起こし、モーダルなVCで終わります。今、私はストレートタブのルートに戻りたい:

タブ4 - > navigationController - >rootVC - >pushVC - >pushVC - >modalVc

だから私などは、

rootVCにmodalVcから私はthisような何かを行うことができますことを知っているが、私は、タブ内の任意のVCからrootVCに行きたいです4を使用して、その技術を使用すると、タブ4のすべての子VC上に巻き戻しセグを作成するようになります

通知を使用していて、ユーザーが通知を押すとどこからでもrootVCに移動したい。

など使って何か:例えばのために動作しません

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let destinationViewController = storyboard.instantiateViewController(withIdentifier: "accountVc") as? AccountViewController 
         navInTab.pushViewController(destinationViewController!, animated: false) 

:VC - > VC - > modalVc

それが台無しにnavigationstackをするので

+0

正確に何を達成したいですか? –

+0

私のためにモーダルVCで動作しない@Joe – user2636197

答えて

0

あなたはルートに開くことができますスタック内のn番目の要素にポップするか、またはビューコントローラのスタックを別のスタックに置き換えることができます。

navigationControllerでpopToRootViewControllerを使用すると、ナビゲーションスタックのルートに戻ることができます。それとも、

let controllerStack = self.navigationController?.viewControllers 
_ = self.navigationController?.popToViewController((controllerStack?[0])!, animated: true) 

ような何かを考え、あなたが例えば、スタック内の最初のVCに戻りたいとそれとも、コントローラすなわち

NSMutableArray *controllerStack = [NSMutableArray arrayWithArray:navigationController.viewControllers]; 
// Replace the source controller with the destination controller, wherever the source may be 
[controllerStack replaceObjectAtIndex:[controllerStack indexOfObject:sourceViewController] withObject:destinationController]; 

// Assign the updated stack with animation 
[navigationController setViewControllers:controllerStack animated:YES]; 
の新しいスタックにビューコントローラのナビゲーションスタックを置き換えることができます
+0

最初の例を使用しようとしました。エラーが発生します。App – user2636197

+0

の開始/終了の外観トランジションの不均衡な呼び出しそして、 – user2636197

関連する問題