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];
}

 

 

 

 

转载于:https://www.cnblogs.com/davidgu/p/3557126.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值