UINavigationController詳解與使用(一)添加UIBarButtonItem

一、UINavigationController導航控制器如何使用git

UINavigationController能夠翻譯爲導航控制器,在IOS裏常常用到。github

咱們看看它的如何使用:app

下面的圖顯示了導航控制器的流程。最左側是根視圖,當用戶點擊其中的General項時 ,General視圖會滑入屏幕;當用戶繼續點擊Auto-Lock項時,Auto-Lock視圖將滑入屏幕。相應地,在對象管理上,導航控制器使用了導 航堆棧。根視圖控制器在堆棧最底層,接下來入棧的是General視圖控制器和Auto-Lock視圖控制器。能夠調用 pushViewControllerAnimated:方法將視圖控制器推入棧頂,也能夠調用popViewControllerAnimated:方 法將視圖控制器彈出堆棧。atom

上圖來自蘋果官網。spa

 

二、UINavigationController的結構組成.net

看下圖,UINavigationController有Navigation bar  ,Navigation View ,Navigation toobar等組成。翻譯

 

如今咱們創建一個例子,看看如何使用UINavigationController對象

三、新建一個項目blog

命名爲UINavigationControllerDemo,爲了更好理解UINavigationController,咱們選擇Empty Application模板事件

四、建立一個View Controller,命名爲RootViewController:依次選擇File——New——New File,默認勾上With XIB for user interface.

選擇正確位置建立完成,這時項目裏多了三個文件,分別是RootViewController.h RootViewController.m RootViewController.xib文件。

打開RootViewController.xib,添加一個按鈕控件,按鈕Button改爲 :Goto SecondView,爲跳轉作準備

 

五、打開AppDelegate.h,向其中添加屬性:

  1. @property (strong, nonatomic) UINavigationController *navController;  

添加後AppDelegate.h文件代碼以下:
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @class ViewController;  
  4.   
  5. @interface AppDelegate : UIResponder <UIApplicationDelegate>  
  6.   
  7. @property (strong, nonatomic) UIWindow *window;  
  8.   
  9. @property (strong, nonatomic) ViewController *viewController;  
  10.   
  11. @property (strong, nonatomic) UINavigationController *navController;  
  12.   
  13. @end  

六、在AppDelegate.m 文件的didFinishLaunchingWithOptions方法中建立添加navController,RootViewController視圖。
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  
  4.     RootViewController *rootView = [[RootViewController alloc] init];  
  5.     rootView.title = @"Root View";  
  6.       
  7.     self.navController = [[UINavigationController alloc] init];  
  8.     [self.navController pushViewController:rootView animated:YES];  
  9.     [self.window addSubview:self.navController.view];  
  10.     [self.window makeKeyAndVisible];  
  11.     return YES;  
  12. }  
給rootView的titie命名爲 Root View,好識別View直接的切換關係。用pushViewController把rootView加入到navController的視圖棧中。

七、如今Root視圖添加完成

看看效果:

'

如今尚未Navigation bar 。只有title。

八、添加UIBarButtonItem

bar ButtonItem分左右UIBarButtonItem。咱們把左右的都添加上去。

在RootViewController.m中添加代碼以下:

  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.   
  5.     UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(selectLeftAction:)];  
  6.     self.navigationItem.leftBarButtonItem = leftButton;  
  7.       
  8.     UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd  target:self action:@selector(selectRightAction:)];  
  9.     self.navigationItem.rightBarButtonItem = rightButton;<p class="p1">}</p>  
這樣添加了UIBarButtonItem了,效果以下:

 

這裏重點介紹下

UIBarButtonItem *leftButton = [[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemActiontarget:selfaction:@selector(selectLeftAction:)];

UIBarButtonSystemItemAction的風格,這是系統自帶的按鈕風格,看下圖,你不用一個個試驗,你也知道想用那個item,以下圖:


九、響應UIBarButtonItem的事件的實現

咱們在 action:@selector(selectLeftAction:);

action添加了selectLeftAction和selectRightAction

在RootViewController.m文件中添加代碼實現:

  1. -(void)selectLeftAction:(id)sender  
  2. {  
  3.     UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你點擊了導航欄左按鈕" delegate:self  cancelButtonTitle:@"肯定" otherButtonTitles:nil, nil];  
  4.     [alter show];  
  5. }  
  6.   
  7. -(void)selectRightAction:(id)sender  
  8. {  
  9.     UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你點擊了導航欄右按鈕" delegate:self  cancelButtonTitle:@"肯定" otherButtonTitles:nil, nil];  
  10.     [alter show];  
  11. }  
這樣在點擊左右的UIBarButtonItem時,彈出提示:



這篇先講添加UIBarButtonItem,下篇講解頁面跳轉和添加UISegmentedControl


例子代碼:https://github.com/schelling/YcDemo

相關文章
相關標籤/搜索