iOS學習之UINavigationController詳解與使用(一)新增UIBarButtonItem
1、UINavigationController導航控制器如何使用
UINavigationController可以翻譯為導航控制器,在iOS裡經常用到。
我們看看它的如何使用:
下面的圖顯示了導航控制器的流程。最左側是根檢視,當使用者點選其中的General項時 ,General檢視會滑入螢幕;當使用者繼續點選Auto-Lock項時,Auto-Lock檢視將滑入螢幕。相應地,在物件管理上,導航控制器使用了導航堆疊。根檢視控制器在堆疊最底層,接下來入棧的是General檢視控制器和Auto-Lock檢視控制器。可以呼叫pushViewControllerAnimated:方法將檢視控制器推入棧頂,也可以呼叫popViewControllerAnimated:方法將檢視控制器彈出堆疊。
上圖來自蘋果官網。
2、UINavigationController的結構組成
看下圖,UINavigationController有Navigation bar ,Navigation View ,Navigation toobar等組成。
現在我們建立一個例子,看看如何使用UINavigationController
3、新建一個專案
命名為UINavigationControllerDemo,為了更好理解UINavigationController,我們選擇Empty Application模板
4、建立一個View Controller,命名為RootViewController:依次選擇File——New——New File,預設勾上With XIB for user interface.
選擇正確位置建立完成,這時專案裡多了三個檔案,分別是RootViewController.h RootViewController.m RootViewController.xib檔案。
開啟RootViewController.xib,新增一個按鈕控制元件,按鈕Button改成 :Goto SecondView,為跳轉做準備
5、開啟AppDelegate.h,向其中新增屬性:
- @property (strong, nonatomic) UINavigationController *navController;
新增後AppDelegate.h檔案程式碼如下:
- #import <UIKit/UIKit.h>
- @class ViewController;
- @interface AppDelegate : UIResponder <UIApplicationDelegate>
- @property (strong, nonatomic) UIWindow *window;
- @property (strong, nonatomic) ViewController *viewController;
- @property (strong, nonatomic) UINavigationController *navController;
- @end
6、在AppDelegate.m 檔案的didFinishLaunchingWithOptions方法中建立新增navController,RootViewController檢視。
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- RootViewController *rootView = [[RootViewController alloc] init];
- rootView.title = @"Root View";
- self.navController = [[UINavigationController alloc] init];
- [self.navController pushViewController:rootView animated:YES];
- [self.window addSubview:self.navController.view];
- [self.window makeKeyAndVisible];
- return YES;
- }
7、現在Root檢視新增完成
看看效果:
'
現在還沒有Navigation bar 。只有title。
8、新增UIBarButtonItem
bar ButtonItem分左右UIBarButtonItem。我們把左右的都新增上去。
在RootViewController.m中新增程式碼如下:
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(selectLeftAction:)];
- self.navigationItem.leftBarButtonItem = leftButton;
- UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(selectRightAction:)];
- self.navigationItem.rightBarButtonItem = rightButton;<p class="p1">}</p>
這裡重點介紹下
UIBarButtonItem *leftButton = [[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemActiontarget:selfaction:@selector(selectLeftAction:)];
UIBarButtonSystemItemAction的風格,這是系統自帶的按鈕風格,看下圖,你不用一個個試驗,你也知道想用那個item,如下圖:
9、響應UIBarButtonItem的事件的實現
我們在 action:@selector(selectLeftAction:);
action新增了selectLeftAction和selectRightAction
在RootViewController.m檔案中新增程式碼實現:
- -(void)selectLeftAction:(id)sender
- {
- UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你點選了導航欄左按鈕" delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];
- [alter show];
- }
- -(void)selectRightAction:(id)sender
- {
- UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你點選了導航欄右按鈕" delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];
- [alter show];
- }
這篇先講新增UIBarButtonItem,下篇講解頁面跳轉和新增UISegmentedControl
下篇:iOS學習之UINavigationController詳解與使用(二)頁面切換和segmentedController
例子程式碼:https://github.com/schelling/YcDemo
相關文章
- iOS學習之UINavigationController詳解與使用(三)ToolBariOSUINavigationController
- iOS學習之UINavigationController詳解與使用(二)頁面切換和segmentedControlleriOSUINavigationController
- IOS學習筆記——iOS元件之UIScrollView詳解iOS筆記元件UIView
- Linux學習之iostat命令詳解LinuxiOS
- 【IOS開發初學者】UINavigationController詳解iOSUINavigationController
- IOS 學習筆記(2) 檢視UINavigationControlleriOS筆記UINavigationController
- [iOS]UINavigationController 全屏 pop 之為控制器新增左滑 pushiOSUINavigationController
- IOS 學習之XML解析(一)iOSXML
- Git 學習之命令詳解Git
- iOS之runtime詳解api(一)iOSAPI
- iOS逆向工具學習之class-dump安裝與使用iOS
- iOS 8 之後UINavigationController新特性iOSUINavigationController
- UINavigationController - 學習筆記UINavigationController筆記
- JDBC學習1:詳解JDBC使用JDBC
- iOS 動畫詳解(學習動畫看這一篇就夠了)iOS動畫
- java集合學習(一):詳解ArrayListJava
- iOS之StatusBar詳解iOS
- 系統學習iOS動畫之五:使用UIViewPropertyAnimatoriOS動畫UIView
- 深度學習之遷移學習介紹與使用深度學習遷移學習
- VueJS中學習使用Vuex詳解VueJS
- 【強化學習篇】--強化學習案例詳解一強化學習
- iOS學習心得之:KVOiOS
- redux v3.7.2原始碼詳細解讀與學習之composeRedux原始碼
- iOS開發之 Autolayout 詳解iOS
- 學習:FCKeditor使用方法技術詳解
- Python學習之 異常處理詳解Python
- Elsa V3學習之Flowchart詳解(上)
- vmstat與iostat詳解(zt)iOS
- Java RMI學習與解讀(一)Java
- iOS 學習使用 Swift CodableiOSSwift
- iOS之runtime詳解api(三)iOSAPI
- iOS之runtime詳解api(二)iOSAPI
- iOS之runtime詳解api(四)iOSAPI
- iOS UIButton之UIButtonType詳解iOSUI
- iOS UIButton之UIEdgeInsets詳解iOSUI
- iOS 開發之照片框架詳解iOS框架
- iOS Tangram(VirtualView)動態元件的學習與使用iOSView元件
- IOS學習之淺析深拷貝與淺拷貝iOS