標籤:style blog color 使用 strong os
UINavigationController的用法 介面間傳值
UInavigationController繼承於UIViewController,以棧的方式管理所控制的師徒控制器,至少要有一個被管理的視圖控制器
建立的時候需要使用者提供一個視圖控制器作為導航控制器的一個根視圖控制器
出棧和人棧
UINavigationController通過控制入棧和出棧來展示各個視圖控制器
視圖控制器切換常用方法
pushViewController:animated //進?下一個視圖控制器
popViewControllerAnimated //返回上一個視圖控制器
popToViewController:animated //返回到指定的視圖控制器
popToRootViewControllerAnimated //返回到根視圖控制器
定製UINavigationBar
對於navigationBar, iOS7預設的高度是64.
如果將navigationBar的透明度關閉之後,navigationBar的高度將會變為44
整理
每一個視圖控制器都有一個navigationItem屬性,當這個控制器被嵌入到UINavigationController裡之後UINavigationController的navigationBar會根據控制器的navigationItem屬性顯示標題,左按鈕,右按鈕等等
UINavigationController push到哪個控制器,哪個控制器的view就會顯示在UINavigationController 的contentView裡面.同時 ,navigationBar也會根據navigationItem配置bar的顯示 UINavigationBar屬於MVC的V層,主要負責 導航條上的內容的顯示,以棧的方式管理了一組navigationItem,展示的內容是由每一個控制器的navigationItem決定(有沒有標題,有沒有左右按扭,有幾個,分別執行什麼事件等等),另外navigationBar也有自己的屬性,比如背景圖片,tintColor,barTintColor等 UINavigationItem屬於MVC中得M層,為UINavigationBar提供展示的資料(包括標題,左右按鈕) UIBarButtonItem用於描述 條形視圖 (UINavigationBar,UIToolBar等) 上的一個按鈕,也屬於Model UINavigationController導航控制器屬於MVC中得C,主要功能:以棧的方式管理控制器的切換(視圖的切換和導覽列內容的切換,) 並伴有動畫效果,每個控制器實現自己視圖的布局以及事件處理,導航控制器僅僅負責切換,重要的屬性:viewControllers,navigationBar 等//UINavigationController包含一個UINavigationBar//UINavigationBar管理多個UINavigationItem//UINavigationItem包含多個UIBarButtonItem 介面間傳值1.屬性傳值 ---從前往後傳2.單例傳值 ---萬能3.代理傳值 ---從後往前//屬性傳值//1.後面的介面定義一個屬性 用於儲存 ,前一個介面需要傳過來得值//注意:屬性定義成字串還是別的類型,取決於你的需求,本例我們需要一個字串,用於label顯示//2.後面的介面建立完畢之後,為屬性賦值(即:記錄需要傳遞的值)//3.在需要使用值得地方,使用屬性記錄的值//這種通過定義屬性,達到傳值目的的方式,稱為屬性傳值//屬性傳值,.一般用於 從前一個介面向後一個介面傳值
//代理傳值:從後一個介面往前一個介面傳值
//流程
//1.後一個介面定義一個協議,並且定義一個屬性叫delegate
//2.在前一個介面進入後一個介面的瞬間(即:建立完後一個介面之後).讓前一個介面作為後一個介面的delegate
//3.前一個介面事件代理方法
//4.後一個介面在合適的機會, 讓代理執行代理方法 (傳得值以參數的形式含在代理方法裡)
單例傳值
先建一個類,設定單例模式,並加一個屬性,用來存值
//Singleton.h中代碼#import <Foundation/Foundation.h>@interface Singleton : NSObject+ (Singleton *)sharedsingleton;@property (nonatomic,retain) NSString *str;@end//Singleton.m中代碼#import "Singleton.h"@implementation Singletonstatic Singleton *single = nil;+ (Singleton *)sharedsingleton{ @synchronized(self){ if (single ==nil) { single = [[Singleton alloc] init]; } return single; }}@end
在一個介面的button觸發事件的方法中加入下面代碼
Singleton *s = [Singleton sharedsingleton];
s.str = _textfield.text;
在需要接受值得頁面加入
self.navigationItem.title = [Singleton sharedsingleton].str;//傳過來的值設定為bar中title值