Création d'un contrôleurde navigation par programmation (Swift)

j'ai essayé de refaire le travail sur mon application programmatically. (Sans l'utilisation de Story-boards)

j'ai presque fini, sauf faire le contrôleur de navigation manuellement.

j'ai fait quelques recherches mais je ne trouve aucune documentation sur la mise en œuvre manuelle. (J'ai commencé à faire l'application comme une application de vue unique)

actuellement, je n'ai qu'un viewcontroller. Et bien sûr l'appDelegate

le contrôleur de navigation, sera utilisé dans toutes les pages de l'application.

si quelqu'un pouvait m'aider, ou envoyer un lien vers une documentation appropriée pour faire ceci programmatically il serait grandement apprécié.

EDIT:

j'ai oublié de mentionner que C'est à Swift.

33
demandé sur Cœur 2015-03-01 15:06:40

4 réponses

Swift 1, 2:

self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var nav1 = UINavigationController()
var mainView = ViewController(nibName: nil, bundle: nil) //ViewController = Name of your controller
nav1.viewControllers = [mainView]
self.window!.rootViewController = nav1
self.window?.makeKeyAndVisible()

Swift 3+: et Swift 4+

self.window = UIWindow(frame: UIScreen.main.bounds)
let nav1 = UINavigationController()
let mainView = ViewController(nibName: nil, bundle: nil) //ViewController = Name of your controller
nav1.viewControllers = [mainView]
self.window!.rootViewController = nav1
self.window?.makeKeyAndVisible()
64
répondu Jogendra.Com 2018-07-24 09:38:02

je vous recommande de démarrer votre AppDelegate avec ce squelette:

1) utilisez let partout où vous le pouvez!

2) UINavigationController possède la propriété rootViewController .

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    let viewController = ViewController(nibName: nil, bundle: nil) //ViewController = Name of your controller
    let navigationController = UINavigationController(rootViewController: viewController)

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    self.window?.rootViewController = navigationController
    self.window?.makeKeyAndVisible()

    return true
}
11
répondu telenaut 2016-10-17 22:59:56

essayez celui-ci . Il vous guidera dans l'utilisation du contrôleur de navigation.

programmatically creating UINavigationController in iOS

AppDelegate.h

    #import <UIKit/UIKit.h>
    #import "LoginViewController.h"

    @interface AppDelegate : UIResponder <UIApplicationDelegate>

    @property (strong, nonatomic) UIWindow *window;
    @property (strong,nonatomic) UINavigationController *navigationController;
    @property (strong,nonatomic) LoginViewController *loginVC;

    @end

AppDelegate.m

    #import "AppDelegate.h"
    #import "LoginViewController.h"

    @implementation AppDelegate

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

   self.loginVC = [[LoginViewController alloc]initWithNibName:nil bundle:nil];
   self.loginVC.title = @"Login Page";

   self.navigationController = [[UINavigationController alloc]initWithRootViewController:self.loginVC];

   self.window.rootViewController = self.navigationController;
   [self.window makeKeyAndVisible];
  }

puis quand vous voulez pousser l'autre contrôleur de vue, utilisez simplement le code suivant pour passer à un autre contrôleur de vue.

- (IBAction)pushMyProfileView:(id)sender
{
    self.myProfileVC = [[MyProfileViewController alloc]initWithNibName:nil bundle:nil];
    [appDelegate.navigationController pushViewController:self.myProfileVC animated:YES];
}
0
répondu Hardik Shekhat 2017-05-23 12:34:28
 self.window = UIWindow(frame: UIScreen.main.bounds) 
 let storyboard = UIStoryboard(name: "Main", bundle: nil) 
 let storyboard_Secondary = UIStoryboard(name: "Secondary", bundle: nil) 
 var initialViewController = UIViewController() 

 let aUser = CommonMethods.loadCustomObject("\(Constants.kUserProfile)") as? User  
 if aUser?.respCode == 1 { 
    initialViewController = storyboard_Secondary.instantiateViewController(withIdentifier: "MainTabVC")
    UIApplication.shared.statusBarStyle = .lightContent
    let navigationController = UINavigationController(rootViewController: initialViewController)
    navigationController.isNavigationBarHidden = true
    self.window!.rootViewController = navigationController
    self.window!.makeKeyAndVisible() 
}
0
répondu Nikunj Patel 2017-04-11 14:04:06