web-dev-qa-db-ja.com

initWithRootViewController以外の方法でUINavigationControllerのrootViewControllerを設定します

rootViewController以外の方法でUINavigationControllerinitWithRootViewControllerを設定するにはどうすればよいですか?

initWithNavigationBarClass:toolbarClass:を使用してNavigationControllerのカスタムツールバーを提供したいので、initWithRootViewControllerを使用できないと思います。

67
drc

これを解決するには、setViewControllersを呼び出します。

このような:

UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[MyNavigationBar class] toolbarClass:[UIToolbar class]];

[navigationController setViewControllers:@[yourRootViewController] animated:NO];
131
Leon Lucardie

Swiftを使用したナレッジ共有:

アプリのデリゲート以外のクラスからルートビューコントローラーを変更する

let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var homeViewController = mainStoryboard.instantiateViewControllerWithIdentifier("HomeViewController") as! HomeViewController
let nav = UINavigationController(rootViewController: homeViewController)
appdelegate.window!.rootViewController = nav

これが誰かに役立つことを願っています。

編集済み:

アニメーションによるrootviewcontrollerの変更は、次の方法で実現できます。

 UIView.transitionWithView(self.window!, duration: 0.5, options: UIViewAnimationOptions.TransitionFlipFromLeft, animations: {
    self.window?.rootViewController = anyViewController
}, completion: nil)

this。 に似すぎたgeneralizeメソッドを書くことができます

24
Arvind

これは私のために働く、それがあなたを助けることを願って、

let rootVC:LoginViewController = self.storyboard?.instantiateViewControllerWithIdentifier("LoginViewController") as! LoginViewController
let nvc:UINavigationController = self.storyboard?.instantiateViewControllerWithIdentifier("RootNavigationController") as! UINavigationController
nvc.viewControllers = [rootVC]
UIApplication.sharedApplication().keyWindow?.rootViewController = nvc
11
Patel Jigar

Swift 3.0 xcode8.1で

一般設定では、メインインターフェースで削除します:メイン<-メインインターフェースの後にこれ:

class AppDelegate...

 var window: UIWindow?

    fun application...

      window = UIWindow(frame: UIScreen.main.bounds)
      window?.makeKeyAndVisible()
      window?.rootViewController = UINavigationController(rootViewController: NewYourController)
2
Anton Russia