私はCosmicMindによってMaterial Frameworkを使用しています。現在、SideNavigationController
で行が選択されたら、ViewController
を置き換えようとしています。残念ながら、私はこれを行う方法を理解することはできません。 StackOverflow(#1)にも同様の質問がありますが、残念ながら解決策は私のためには機能しません。 AppDelegate.swift
クラスの私のコードに続いてSideNavigationController - NavigationControllerのrootViewControllerを置き換えます
:このコードのすべてを
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let myViewController = storyboard.instantiateViewControllerWithIdentifier("MyViewController")
let navigationController: NavigationController = AppNavigationController(rootViewController: myViewController)
let sideNavigationController: SideNavigationController = SideNavigationController(rootViewController: navigationController, leftViewController: AppLeftViewController())
// further code
return true
}
が正常に動作します。 ViewController(MyViewController)が表示されます。
MyViewControllerをMySecondViewControllerに置き換えようとしていますが、これは機能しません。次のコード私が使用してきた:
sideNavigationController?.transitionFromRootViewController(MySecondViewController())
結果は、ツールバーが消えて、私はもうSideNavigationControllerを閉じることができないということです。このコードでは
let navigationController: NavigationController = AppNavigationController(rootViewController: MySecondViewController())
sideNavigationController?.transitionFromRootViewController(navigationController)
ツールバーが再び表示されているが、SideNavigationControllerに問題が残っている - >意味:だから私は、次の試してみたそれを閉じることができません。
TL; DR
にはどうすれば適切にNavigationControllerのrootViewControllerを交換するのですか?
を迅速かつ総合的な答えてくれてありがとう。問題は、私が「pushViewController」アプローチを使用すると、私はツールバーに「バックキャレット」を持ち、以前に表示されたViewControllerは置き換えられませんが、バックスタックに置かれます。 SideNavigationController、それじゃない? – user3420815
はい、私は、SideNavigationControllerからアイテムが選択されたときに、backButtonが表示されるとは思わないでしょう。ここで私はそれを見ています。 NavigationControllerはUIViewControllerのサブクラスであるUINavigationControllerのサブクラスです。これは、それが何となく終わりにUIViewControllerであることを意味します。 「複数のナビゲーションスタックを使用することはできません」というルールはありません。つまり、SideNavigationControllerからのナビゲーションフローを起動する場合、独自のスタックを持つ新しいNavigationControllerを簡単に起動できます。 – CosmicMind
これで、rootViewController(例:* MySecondViewController *)で新しい 'NavigationController'を作成し、' sideNavigationController?.transitionFromRootViewController(newNavController) 'を呼び出す必要があると言っていますか? – user3420815