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)

 

 

 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];
}
复制代码

 

 

 

 

posted @   Master HaKu  阅读(258)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示