UI學習筆記---第八天

來源:互聯網
上載者:User

標籤: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值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.