Implementing Navigation with UINavigationControlle

問題:objective-c

     你想要容許你的用戶在視圖之間來回切換app

解決方法:ide

     

     使用UINavigationController動畫

討論:atom

     選擇Empty Application取什麼名字你隨意,而後選擇菜單文件選擇New->New File...選擇第一個objective-c Class這個文件,命名爲FirstViewController,繼承自UINavigationController。spa

     基本文件搞定,而後咱們開始,找到APP的代理文件 AppDelegate.m文件,而後寫下以下代碼:.net

                 #import 「AppDelegate.h」代理

                 #import 「FirstViewController.h」orm

                 @interface AppDelegate ()對象

                  @property(nonatiomic,strong) UINavigationController *navigationController;

                 @end

               @implementation AppDelegate

             …

    如今咱們要使用 initWithRootViewController : 方法初始化導航欄,而且傳遞咱們的參數。而後導航欄就做爲根視圖出如今窗口上。這裏千萬不要混淆,UINavigationController是UIViewController的子類,這裏的RootViewController能夠是任何對象,因此咱們但願咱們的根視圖控制器是一個導航控制器,就只需設置導航控制器爲根視圖控制器。     那麼開始動手寫代碼

      - (BOOL)  application:(UIApplication *)application didFinishLauchingWithOptions: (NSDictionary *) lauchOptions

  

{

   FirstViewController *viewController = [[FirstViewController alloc ] initWithName:nil bundle:nil];

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

   self.window = [[UIWindow alloc] initWithName: [UIScreen mainScreen] bounds];

   

   self.window.rootViewController = self.navigationController;

   self.window.backgroundColor = [UIColor whiteColor];

  [self.window makeKeyAndVisible];

  

   return YES;

}

  如今在模擬器中運行這個應用看: 應該出現這個圖片:

圖:1-33 顯示導航欄控制器

可能會注意到導航欄顯示「First Controller」,這難道是新的部件?並非,這也是導航條,咱們會在不少的導航中使用到那個bar,這裏的bar顯示的是一個文本,每一個視圖控制器指定了一個標題自己,一旦視圖控制器被壓入堆棧,導航控制器就會自動顯示這個文本!

  找到咱們的根視圖控制器的實現穩健,在ViewDidLoad方法裏面,設置標題而且添加按鈕,當用用戶按下這個按鈕,就會跳到第二個視圖控制器! (仍是在AppDelegate.m文件裏,而後代碼以下:)

      #import 「FirstController.h」

      #import 「SecondController.h」

     @interface FirstViewController ()

            @property (nonatomic, strong) UIButton *displaySecondViewController;

     @end

    

    @implemetation FirstViewController

 

    - (void) performDisplaySecondViewController: (id)parmamSender

{

     SecondViewController *secondController  = [[SecondViewController alloc] initWithName:nil  bundle:YES];

      [self.navigationContoller pushViewContoller : 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.addSubBiew: self.displaySecondViewController];

}

@end

如今建立第二個視圖控制器,命名爲SecondViewController,(就像建立FIrstViewController同樣建立SecondViewController)既然建立了,那咱們就給他一個標題

#import  「SecondViewController.h」

@implementation  SecondViewController

- (void)viewDidLoad

{

  [super viewDidLoad];

  self.title = @「Second Controller」;

}

兩個視圖都建立好了,接下來要作的就是實現從第一個視圖跳轉到第二個試圖。使用popViewControllerAnimate:方法,取布爾做爲參數。若是布爾值設置爲YES ,就會在轉到下一個視圖控制器的時候會有動畫效果,若是NO則反之。當顯示屏幕上的第二個視圖控制器,你會看到相似於圖1-34所示的東西。

圖:1-34

#import 「SecondViewController


@implementation SecondViewController

- (void)viewDidLoad

{

   [super viewDidLoad];


   self.title = @「Second Controller」;

}


- (void)goBack

{

   [self.navigationController popViewControllerAnimates:YES];

}


- (void) viewDidAppear:(BOOL)paramAnimated

{

   [super viewDidAppear : paramAnimated];

   [self performSelector: @selector(goBack)  withObject:nil      afterDelay:5.0f];

}

@end


經過以上代碼咱們就完成了咱們的需求了!

相關文章
相關標籤/搜索