目標 : NavigationController導航的作用和使用
程序效果圖如下 :
程序啓動第一個 view 上面包含了一個 NavigationController 。爲了區別視圖界面,我們在第一個放了一個lable title爲:rootView 第二個視圖中 放了一個 lable title爲two,
同時第一個視圖中還放了一個 button 點擊button 會跳入到第二個 視圖中 ,並可以在 第二個視圖中 點擊 NavigationController 中的 root View(系統自動生成) 按鈕 返回到 第一個視圖中,這就是 NavigationController的作用。
NavigationController 是創建分層應用程序的主要工具,它在管理在管理以及換入,換出多個視圖方面 和 TabBarController 比較類似,不同的地方是 NavigationController是作爲棧(stack)來實現的。根視圖控制器在堆棧最底層,接下來入棧的是General視圖控制器和Auto-Lock視圖控制器。可以調用 pushViewControllerAnimated:方法將視圖控制器推入棧頂,也可以調用popViewControllerAnimated:方 法將視圖控制器彈出堆棧 如下圖:
此圖摘自於互聯網
UINavigationController的結構組成
看下圖,UINavigationController有Navigation bar ,Navigation View ,Navigation toobar等組成。
此圖摘自於互聯網
下面我們使用控件來實現一次 :
爲了讓我更清楚的瞭解NavigationController的用法,我們創建一個空的 ios application 項目。
啓動Xcode 工具 創建一個新的工程, ios-》application -》 empty application
填寫工程信息 , 我這裏項目名稱起名爲 : iphone_Sample_Navigation
class prefix 起名爲 : Nav 下面複選框部分 全部 保持不選中狀態,如下圖:
點擊 next 點擊 選擇保存位置 。
創建好 項目後, 開始步入正題 。
1: 首先創建一個 空的 xib 視圖文件, 在視圖文件中添加 一個UINavigationController
點擊Xcode中的項目目錄 ,右鍵 new file -》 ios -》User Interface -》 Empty 點擊 next, 選擇 Device family 爲 iphone 點擊next 填寫文件名,爲 ”NavigationViewContoller“ 其他保持默認。 點擊創建 。
創建後 Xcode 爲我們生成了 一個 NavigationViewContoller.xib 文件 , 點擊 打開它 。我們發現 該 xib 視圖文件中是空的 ,不用擔心 我們拖一個Navigation Contoller組件進去,此視圖將作爲我們的根視圖控制器,它在堆棧最底層的。
如圖 :
2:和委託器建立連接。即使用委託器來管理我們的 NavigationController 在上圖界面下打開 助理編輯器,把 NavigationController 組件以輸出口(IBOutlet)的方式連接到 委託器的.h 文件中去。如圖:
上圖中 紅色 框框標示的部分爲 建立連接後的 輸出口。 並在委託器的 .m 文件中 生成相應的聲明管理方法。
3: 打開我們的委託器。(這裏爲:NavAppDelegate.m)初始化 NavigationController 對象,並添加到委託中的view 中,這時 NavigationController 對象成爲我們的根視圖控制器對象了。 代碼如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
[[NSBundle mainBundle]loadNibNamed:@"NavigationViewContoller" owner:self options:nil];
[self.window addSubview:self.naviGationController.view];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
上面代碼中,藍色代碼部分 爲核心代碼 。
啓動我們的 模擬器, 運行程序,就可以看到我們的 NavigationController視圖界面了。
細心的童鞋 發現 怎麼我們的NavigationController 的 頭部沒有標題呢。 呵呵是的,我們還沒設置標題了 ,打開xib視圖界面,依次展開左側Objects欄目中的 NavigationController 選中 Navigation ltem 對象,打開我們的屬性檢查器,就會看到我們的 title 屬性了(如下圖), 設置它就可以看到 NavigationController 的頭部標題了, 趕快去試試吧。
接着 我們來試試多視圖跳轉。 我們需要在創建一個 視圖 controller , 選中Xcode中的項目目錄 右鍵 -》 new file -》Cocoa Touch -》Objective -C class 創建一個 帶xib的controller 這裏命名爲 :NavTwoViewController 繼承至 UIViewController 並選中 With XIB for user interface 複選框 創建。
打開 NavTwoViewControlle,xib 文件,在這個文件我們只需要放個 label 來標示爲第二個視圖界面即可
保存並關閉。
繼續打開我們NavigationViewContoller.xib 視圖界面 爲我們的視圖界面拖放一個Button按鈕。並給它設置個title屬性,同樣點開屬性檢查器,在屬性檢查器,有title 屬性,這個按鈕的作用是 ,點擊它 跳到我們剛剛創建的 view
拖放好button 後 需要爲 改連接創建一個 動作連接, 還在在這個視圖界面下,打開助理編輯器,把這個button 以Action 方式連接到 委託器的 頭文件中,注意:Connect: 需要選擇爲Action 如下圖 :
上圖中爲 連接後成功後的界面, 此時在委託器的.m 文件中也會爲我們生成這個方法,我們實現這個方法,來實現跳轉 。代碼如下 :
- (IBAction)gotoView:(id)sender {
NavTwoViewController *root=[[NavTwoViewController alloc]initWithNibName:@"NavTwoViewController" bundle:nil];
root.title=@"two view";
[self.naviGationController pushViewController:root animated:YES];
}
要在 委託器類(NavAppDelegate.m)中使用 NavTwoViewController 對象 還需要在 委託器的 開始引入這個類,代碼如下(藍色部分):
#import "NavAppDelegate.h"
#import "NavTwoViewController.h"
@implementation NavAppDelegate
保存 運行 即可 , root.title=@"two view"; 爲第二個界面設置 導航title
源碼下載地址 :
https://blog.51cto.com/ext/down_att.php?aid=36077&code=1352