Comment définir le rootViewController
de UINavigationController
avec une méthode autre que initWithRootViewController
?
Je veux utiliser initWithNavigationBarClass:toolbarClass:
pour fournir une barre d’outils personnalisée pour mon NavigationController, donc je ne pense pas pouvoir utiliser initWithRootViewController
.
Vous pouvez résoudre ce problème en appelant setViewControllers
.
Comme ça:
UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[MyNavigationBar class] toolbarClass:[UIToolbar class]];
[navigationController setViewControllers:@[yourRootViewController] animated:NO];
Partage de connaissances avec Swift:
Modification du contrôleur de vue racine d'une classe autre que app delegate.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
J'espère que cela aidera à quelqu'un.
Édité:
Changer rootviewcontroller With Animation peut être réalisé avec:
UIView.transitionWithView(self.window!, duration: 0.5, options: UIViewAnimationOptions.TransitionFlipFromLeft, animations: {
self.window?.rootViewController = anyViewController
}, completion: nil)
Nous pouvons écrire une méthode généralisée trop semblable à this.
celui-ci fonctionne pour moi, j'espère que cela vous aidera,
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
Dans Swift 3.0 xcode8.1
dans les paramètres généraux, supprimez dans l'interface principale: Main <- ceci après Interface principale:
class AppDelegate...
var window: UIWindow?
fun application...
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = UINavigationController(rootViewController: NewYourController)