iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程
文件目錄如下:基本導(dǎo)航順序: root -> First -> Second -> Third。其中,F(xiàn)irstViewController作為 navigation堆棧的rootview

1、創(chuàng)建navigation
如果是想直接把navigation導(dǎo)航作為項(xiàng)目一開始的跟視圖,把RootViewController.h文件里的nav屬性放到AppDelegate.h里即可,再把RootViewController.m文件里的action的代碼復(fù)制到 AppDelegate.m里的didFinishLaunchingWithOptions 方法里,最后把 self.window.rootViewController 設(shè)置 UINavigationController類型的屬性nav即可
在RootViewController.h文件
#import <UIKit/UIKit.h>
@class FirstViewController;
@interface RootViewController : UIViewController
@property (strong, nonatomic) UINavigationController *nav;
- (IBAction)btnClick:(UIButton *)sender;
@end
在RootViewController.m 文件里的隨意一個(gè)自定義action里:
- (IBAction)btnClick:(UIButton *)sender {
//創(chuàng)建一個(gè)viewcontroller
FirstViewController *fristview =[[[FirstViewController alloc] init] autorelease];
//初始化UINavigationController(方式一)
self.nav = [[[UINavigationController alloc] initWithRootViewController:fristview] autorelease];
//初始化UINavigationController(方式二)
// self.nav = [[[UINavigationController alloc] init] autorelease];
// [self.nav pushViewController:fristview animated:YES];
//初始化UINavigationController(方式三,失敗,xib文件加載失敗,原因暫時(shí)不明)
// self.nav = [[[UINavigationController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
//跳轉(zhuǎn)到FirstView頁面
[self presentViewController:self.nav animated:YES completion:nil];
//這種寫法一般用于往view里添加一些小控件,如button label textField之類的,不適宜用于頁面跳轉(zhuǎn)
// [self.view addSubview:self.nav.view];
}
2.navigation的常用屬性設(shè)置例子
我們的navigation就加載上去了以后,下面我們來設(shè)置navigation的屬性:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self.navigationController.navigationBar setTranslucent:NO];//設(shè)置navigationbar的半透明
self.title = @"navigationcontroller";//設(shè)置navigationbar上顯示的標(biāo)題
[self.navigationController.navigationBar setBarTintColor:[UIColor purpleColor]];//設(shè)置navigationbar的顏色
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonItemStyleDone target:self action:Nil];//設(shè)置navigationbar左邊按鈕
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonItemStylePlain target:self action:Nil];//設(shè)置navigationbar右邊按鈕
[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];//設(shè)置navigationbar上左右按鈕字體顏色
}
效果圖如下:

這里還有一個(gè)屬性常用,就是:
NSArray *arr = [NSArray arrayWithObjects:@"1",@"2", nil nil];
UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:arr];
self.navigationItem.titleView = segment;//設(shè)置navigation上的titleview
效果如下:

對(duì),我們看到中間的字變成了兩個(gè)可選的按鈕,這就是navigation的另一個(gè)屬性:navigationitem.titleview。
下面我們?cè)俳⒁粋€(gè)視圖,看一下兩個(gè)視圖之前是怎樣通信的。
在第二個(gè)視圖中,我添加了一個(gè)button來顯示,并加了一個(gè)成員變量來接收從第一個(gè)視圖中穿過來的值:
@interface SecondViewController : UIViewController
@property (copy,nonatomic) NSString *str;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.title = @"second";
UIButton *aBUTTON = [[UIButton alloc]initWithFrame:CGRectMake(30, 30, 50, 30)];
[aBUTTON setTitle:_str forState:UIControlStateNormal];
[aBUTTON addTarget:self action:@selector(clicked) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:aBUTTON];
}
然后我將第一個(gè)視圖的右邊按鈕添加一個(gè)事件,點(diǎn)擊按鈕,就會(huì)推出第二個(gè)視圖,并顯示我們傳過來的值:
- (void)clicked{
SecondViewController *second = [[SecondViewController alloc]init];
[self.navigationController pushViewController:second animated:YES];
second.str = @"hello!!";
[second release];
}
下面,我們來運(yùn)行一下:

點(diǎn)進(jìn)按鈕以后,我們的第二個(gè)視圖推出,button顯示了傳過來的值。
然后我們點(diǎn)擊回button,還有navigation另外一個(gè)方法:
- (void)clicked{
[self.navigationController popViewControllerAnimated:YES];
}
這樣就可以回到第一個(gè)視圖。
相關(guān)文章
iOS開發(fā)-調(diào)用系統(tǒng)相機(jī)和相冊(cè)獲取照片示例
這篇文章主要介紹了iOS開發(fā)-調(diào)用系統(tǒng)相機(jī)和相冊(cè)獲取照片示例的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02
簡(jiǎn)介iOS開發(fā)中應(yīng)用SQLite的模糊查詢和常用函數(shù)
這篇文章主要介紹了iOS開發(fā)中應(yīng)用SQLite的模糊查詢和常用函數(shù),SQLite是一個(gè)可作嵌入式的數(shù)據(jù)庫非常適合小型應(yīng)用使用,需要的朋友可以參考下2015-12-12
iOS開發(fā)系列--詳細(xì)講解C語言之存儲(chǔ)方式和作用域
本篇文章主要介紹了iOS開發(fā)系列--詳細(xì)講解C語言之存儲(chǔ)方式和作用域,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
IOS 開發(fā)APP之關(guān)于時(shí)間處理詳細(xì)介紹
這篇文章主要介紹了IOS 開發(fā)APP之關(guān)于時(shí)間處理詳細(xì)介紹的相關(guān)資料,開發(fā)APP 不僅需要對(duì)API的調(diào)用還需要對(duì)時(shí)間相關(guān)的各種API之間的差別,再因場(chǎng)景而異去設(shè)計(jì)相應(yīng)的機(jī)制,需要的朋友可以參考下2016-12-12
iOS實(shí)現(xiàn)電商購(gòu)物車界面示例
這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)一個(gè)類似電商購(gòu)物車界面示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
詳解iOS14 Widget 開發(fā)相關(guān)及易報(bào)錯(cuò)地方處理
這篇文章主要介紹了詳解iOS14 Widget 開發(fā)相關(guān)及易報(bào)錯(cuò)地方處理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

