IOS 7 Study - Implementing Navigation with UINavigationController

Problem
You would like to allow your users to move from one view controller to the other with
a smooth and built-in animation.


Solution
Use an instance of UINavigationController.

 

What it's like

If you’ve used an iPhone, iPod Touch, or iPad before, chances are that you have already
seen a navigation controller in action. For instance, if you go to the Settings app on your
phone and then press an option such as Wallpaper (see follow)

 

IOS 7 Study - Implementing Navigation with UINavigationController

 

 1. Add UINavigationController property in app delegate implementation

#import "AppDelegate.h"

#import "FirstViewController.h"



@interface AppDelegate ()



@property (nonatomic, strong) UINavigationController *navigationController; @end



@implementation AppDelegate



...

 

2. Initialize our navigation controller using its initWithRootViewController: method and pass our root view controller as its parameter.

    Then we will set the navigation controller as the root view controller of our window.

- (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    FirstViewController *viewController = [[FirstViewController alloc]

                                            initWithNibName:nil

                                            bundle:nil];

    self.navigationController = [[UINavigationController alloc]

                                 initWithRootViewController:viewController];

    self.window = [[UIWindow alloc]

                   initWithFrame:[[UIScreen mainScreen] bounds]];

    self.window.rootViewController = self.navigationController;

    self.window.backgroundColor = [UIColor whiteColor];


[self.window makeKeyAndVisible];
return YES; }

 

3. FirstViewController implementation

#import "FirstViewController.h"

#import "SecondViewController.h"



@interface FirstViewController ()



@property (nonatomic, strong) UIButton *displaySecondViewController;



@end



@implementation FirstViewController



- (void) performDisplaySecondViewController:(id)paramSender {

    SecondViewController *secondController = [[SecondViewController alloc]

                                                initWithNibName:nil

                                                bundle:NULL];



    [self.navigationController pushViewController:secondController animated:YES];

}



- (void)viewDidLoad {

    [super viewDidLoad];

    self.title = @"First Controller";

    self.displaySecondViewController = [UIButton buttonWithType:UIButtonTypeSystem];

    [self.displaySecondViewController

        setTitle:@"Display Second View Controller"

        forState:UIControlStateNormal];

    [self.displaySecondViewController sizeToFit];

    self.displaySecondViewController.center = self.view.center;

    [self.displaySecondViewController

        addTarget:self

        action:@selector(performDisplaySecondViewController:)

        forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:self.displaySecondViewController];

}



@end

 

4. create this second view controller, without a .xib file

#import "SecondViewController.h"



@implementation SecondViewController



- (void)viewDidLoad {

    [super viewDidLoad];

    self.title = @"Second Controller";

}



- (void) goBack {

    [self.navigationController popViewControllerAnimated:YES];

}



- (void) viewDidAppear:(BOOL)paramAnimated {

    [super viewDidAppear:paramAnimated];

    [self performSelector:@selector(goBack)

        withObject:nil

        afterDelay:5.0f];

}

 

 

 

 

你可能感兴趣的:(controller)