2016-08-21 1 views
0

私のアプリは、すべてのビューは、4ボタンを押して、A、B、Cにジャンプしてみましょう とタブバーを持つビューAにDプログラムで複数のナビゲーションコントローラを追加するにはどうすればよいですか?

stacks

を開始し、私が現在持っていることは、このシナリオは次のとおりです。

A、B、C、Dのいずれかに移動すると、スタックの最下部に戻る 上のすべてのものが一掃されます。

が、私は、私はBに1から移動するときに、これらのナビゲーションは今

1: A>1 
2: B>3>7 
3: C>2>5>6>8>7 
4: D>9>1 

が起こっ例えば、それは、この画像のように行動する必要があるが、私はB

のトップであるバック7へ行きます

質問:複数のナビゲーションコントローラが必要な場合はありますか?私はappDelegatedidFinishLaunchingWithOptionsの機能にこれを入れて、複数のナビゲーションコントローラをプログラム的に行う方法は? A、Bプッシュまたはロードビューコントローラの間で使用するものは何ですか?

////////// NC 

    let storyboard = UIStoryboard(name: "Main", bundle: nil) 

    let mainView  = storyboard.instantiateViewControllerWithIdentifier("selectLocation") as! selectLocation // 1 Home 
    let searchView  = storyboard.instantiateViewControllerWithIdentifier("2") as! Search // 1 Home 
    let friendsView  = storyboard.instantiateViewControllerWithIdentifier("3") as! Friends // 1 Home 
    let meView   = storyboard.instantiateViewControllerWithIdentifier("4") as! Me // 1 Home 

    var nav1 = UINavigationController() 
    nav1.viewControllers = [mainView] 
    nav1.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 

    var nav2 = UINavigationController() 
    nav2.viewControllers = [searchView] 
    nav2.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 

    var nav3 = UINavigationController() 
    nav3.viewControllers = [friendsView] 
    nav3.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 

    var nav4 = UINavigationController() 
    nav4.viewControllers = [meView] 
    nav4.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 

    UINavigationBar.appearance().barTintColor = UIColor(red: 176.0/255.0, green: 190.0/255.0, blue: 105.0/255.0, alpha: 1.0) 
    UINavigationBar.appearance().tintColor = UIColor.whiteColor() 
    UINavigationBar.appearance().barStyle = UIBarStyle.BlackTranslucent 

    self.window!.rootViewController = nav1 
    self.window?.makeKeyAndVisible() 

    ////////// NC 
+0

通知: - これを解決しました。解決策が必要な場合は、サンプルgithubプロジェクトを準備し、ここにリンクします。 – DeyaEldeen

+0

あなたはそのGitHubサンプルを入手できましたか? – SQLiteNoob

答えて

1

あなたはrootviewcontrollerとして自分のUIViewControllerですべてnavigationcontrollersを追加することができ、そのタブのナビゲーションコントローラ内の一般的なアプリNavigationControllerを含み、あなたのAppDelegateの一般的なUINavigationControllerを持っている必要があります。

これは、そのパス内のナビゲーションを処理する各タブ用のナビゲーションコントローラを使用します。ユーザーがタブ間を移動すると、それらのタブには最新のビューコントローラーがそのタブに表示されます。 これをプログラマチックに行うには、navコントローラオブジェクトを作成し、スタックの最初のものとしてrootviewcontrollerを設定します。

この方法で各タブのナビゲーションを開始できます。

その後、
private lazy var navigationController:UINavigationController? = { 
    let navigationController = UINavigationController(rootViewController: InitialViewController()) 
    navigationController.setNavigationBarHidden(true, animated: false) 
    return navigationController 
}() 

あなたはプッシュ別のUIViewController

self.navigationController?.pushViewController(vc, animated: animated) 

に必要なすべてのユーザーをタップあなたが戻ってスタック内の行くことができるようになりますそのように。

あなたはrootViewControllerは、この方法あなたが

self.navigationController?.setViewControllers([vc], animated: animated)

それを必要とする場合、私はアプリnavigationControllerとNavigationControllers及び方法の配列をプッシュすることを含んでいるラッパークラスを作成するには良い練習を検討したいこと/変更必要に応じてナビゲーションを設定します。このように見えるquestion

私は助けてくれることを願っています。

+0

良いですが、デリゲートに「プライベート・レイジー・....」スニペットを入れましたか? なぜ4を作成しないのですか?私はあなたが作成したものだけを見ることができます、詳細な例を教えてください。この質問はまだ何とか私を混乱させる...[4つのナビゲーションコントローラを追加する]を質問のコードに追加します。 – DeyaEldeen

+0

はい、例として追加しました。 – TomCobo

+0

申し訳ありませんが、私はこの仕事をしたり、iOSの書籍のセクションを読んだり、混乱したりして多くの実験を行い、あなたが投稿したリンクや他のリンクを見て、これについてgithubの例はありませんか?怠惰なvarを置くために私が立ち往生している私を助けようとしてください?私は各タブビューにそのvarをロードしようとしました。 – DeyaEldeen

関連する問題