天天看點

IOS開發UI篇—導航控制器屬性和基本使用

一、導航控制器的一些屬性和基本使用

1.把子控制器添加到導航控制器中的四種方法

(1)

1.建立一個導航控制器

uinavigationcontroller *nav=[[uinavigationcontrolleralloc]init];

2.設定導航控制器為window的根視圖

self.window.rootviewcontroller=nav;

3.添加

yyoneviewcontroller *one = [[yyoneviewcontroller alloc] init];

[nav pushviewcontroller:one animated:yes];

(2)

[nav addchildviewcontroller:one];

(3)

nav.viewcontrollers=@[one];(添加到導航控制器的棧中)

說明:nav.viewcontrollers;== nav.childviewcontrollers;注意該屬性是隻讀的,是以不能像下面這樣寫。nav.childviewcontrollers = @[one];

(4)最常用的方法

yyoneviewcontroller *one=[[yyoneviewcontroller alloc]init];

uinavigationcontroller *nav=[[uinavigationcontroller alloc]initwithrootviewcontroller:one];

2.目前子控制器界面導航欄的标題以及對應傳回标題的設定

self.navigationitem.title=@"第一個界面";

self.navigationitem.backbarbuttonitem=[[uibarbuttonitemalloc]initwithtitle:@"傳回一"style:uibarbuttonitemstyleplain target:nilaction:nil];

3.給導航欄添加按鈕

說明:可添加一個,也可以添加多個(數組)

  添加導航欄左邊的按鈕(添加一個相機圖示的按鈕),會蓋掉傳回

  self.navigationitem.leftbarbuttonitem=[[uibarbuttonitem alloc]initwithbarbuttonsystemitem:uibarbuttonsystemitemcamera target:nil action:nil];

4.界面跳轉

跳轉到第二個界面(目前為第三個,移除目前棧頂的控制器) [self.navigationcontrollerpopviewcontrolleranimated:yes];

  移除處理棧底控制器之外的所有控制器 [self.navigationcontrollerpoptorootviewcontrolleranimated:yes];

  隻要傳入棧中的某一個控制器,就會跳轉到指定控制器 [self.navigationcontroller poptoviewcontroller:<#(uiviewcontroller *)#> animated:<#(bool)#>];

二、代碼示例

yyappdelegate.m檔案

IOS開發UI篇—導航控制器屬性和基本使用
IOS開發UI篇—導航控制器屬性和基本使用

yyoneviewcontroller.m檔案

IOS開發UI篇—導航控制器屬性和基本使用
IOS開發UI篇—導航控制器屬性和基本使用

yytwoviewcontroller.m檔案

IOS開發UI篇—導航控制器屬性和基本使用
IOS開發UI篇—導航控制器屬性和基本使用

yythreeviewcontroller.m檔案

IOS開發UI篇—導航控制器屬性和基本使用
IOS開發UI篇—導航控制器屬性和基本使用

實作效果:

IOS開發UI篇—導航控制器屬性和基本使用
IOS開發UI篇—導航控制器屬性和基本使用
IOS開發UI篇—導航控制器屬性和基本使用

三、導航控制器通過棧來管理子控制器

示意圖

IOS開發UI篇—導航控制器屬性和基本使用

說明:

導航控制器是通過棧的形式來管理子控制器的(先進後出)

顯示在導航控制器上得view永遠是棧頂控制器的view

一個導航控制器隻有一個導覽列,也就是說所有的自控制器公用一個導覽列。

四、補充

在代理方法中,列印目前window下面的所有子控件,并通過xml檔案來儲存,代碼如下。

IOS開發UI篇—導航控制器屬性和基本使用
IOS開發UI篇—導航控制器屬性和基本使用

注意:在ios7和以前版本中,各個控件,包括子控制器界面frame的不同。