日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > UIWindow的常見屬性以及設置

UIWindow的常見屬性以及設置

來源:程序員人生   發布時間:2015-03-31 08:08:11 閱讀次數:3202次

1.UIWindow

* 主窗口的概念

* 新建UIWindow


2.UIViewController

* 控制器的創建方式

* 控制器view的創建方式

* view的懶加載

* loadViewviewDidLoadviewDidUnloaddidReceiveMemoryWarning


3.UINavigationController

* 通過設置演示基本用處

* 通過非storyboard方式,感受導航的作用

1> 創建導航控制器

2> 設置UIWindow的根控制器

3> push 1個、2個、3 子控制器

4> 解釋push的原理(棧、導航控制器的管理進程)

5> 棧底、棧頂控制器的概念

6> 如何設置導航欄上面的內容、返回文字的設置

7> pop的方法使用

8> pushaddChildviewControllerschildViewController的關系


* 通過storyboard方式,感受導航的作用


4.UIViewController的生命周期方法、AppDelegate的生命周期方法



如何創建1個控制器



控制器常見的創建方式有以下幾種

通過storyboard創建


直接創建

控制器常見的創建方式有以下幾種

通過storyboard創建


直接創建

GYLViewController *nj = [[GYLViewController alloc] init];


指定xib文件來創建

GYLViewController *nj = [[GYLViewController alloc] initWithNibName:@”GYLViewController" bundle:nil];


先加載storyboard文件(Teststoryboard的文件名)

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];


接著初始化storyboard中的控制器

初始化初始控制器(箭頭所指的控制器)

GYLViewController *nj = [storyboard instantiateInitialViewController];


通過1個標識初始化對應的控制器

GYLViewController *nj = [storyboard instantiateViewControllerWithIdentifier:@”nj"];




控制器view的延遲加載



控制器的view是延遲加載的:用到時再加載


可以用isViewLoaded方法判斷1個UIViewControllerview是不是已被加載


控制器的view加載終了就會調用viewDidLoad方法




多控制器


1個iOSapp很少只由1個控制器組成,除非這個app極為簡單


app中有多個控制器的時候,我們就需要對這些控制器進行管理


有多個view時,可以用1個大的view去管理1個或多個小view


控制器也是如此,用1個控制器去管理其他多個控制器


比如,用1個控制器A去管理3控制器BCD

控制器A被稱為控制器BCD父控制器

控制器BCD的被稱為控制器A子控制器


為了便于管理控制器,iOS提供了2個比較特殊的控制器

UINavigationController

UITabBarController



UINavigationController的簡單使用



UINavigationController以棧的情勢保存子控制器

@property(nonatomic,copy) NSArray *viewControllers;

@property(nonatomic,readonly) NSArray *childViewControllers;


使用push方法能將某個控制器壓入棧

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;


使用pop方法可以移除控制器

將棧頂的控制器移除

- (UIViewController *)popViewControllerAnimated:(BOOL)animated;

回到指定的子控制器

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;

回到根控制器(棧底控制器)

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;



如何修改導航欄的內容


導航欄的內容由棧頂控制器的navigationItem屬性決定


UINavigationItem有以下屬性影響著導航欄的內容

左上角的返回按鈕

@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;

中間的標題視圖

@property(nonatomic,retain) UIView          *titleView;

中間的標題文字

@property(nonatomic,copy)   NSString        *title;

左上角的視圖

@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;

UIBarButtonItem *rightBarButtonItem  右上角的視圖

@property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;


Segue的屬性


每個Segue對象,都有3個屬性

唯1標識

@property (nonatomic, readonly) NSString *identifier;

來源控制器

@property (nonatomic, readonly) id sourceViewController;

目標控制器

@property (nonatomic, readonly) id destinationViewController;



Segue的類型


根據Segue的履行(跳轉)時刻,Segue可以分為2大類型

自動型:點擊某個控件后(比如按鈕),自動履行Segue,自動完成界面跳轉


手動型:需要通過寫代碼手動履行Segue,才能完成界面跳轉



自動型Segue


按住Control鍵,直接從控件拖線到目標控制器


點擊登錄按鈕后,就會自動跳轉到右側的控制器


如果點擊某個控件后,不需要做任何判斷,1定要跳轉到下1個界面,建議使用自動型Segue”

手動型Segue


按住Control鍵,歷來源控制器拖線到目標控制器


手動型的Segue需要設置1個標識(如右圖)



在恰當的時刻,使用perform方法履行對應的Segue

[self performSegueWithIdentifier:@"login2contacts" sender:nil];

// Segue必須由來源控制器來履行,也就是說,這個perform方法必須由來源控制器來調用


如果點擊某個控件后,需要做1些判斷,也就是說:滿足1定條件后才跳轉到下1個界面,建議使用手動型Segue”

performSegueWithIdentifier:sender:

利用performSegueWithIdentifier:方法可以履行某個Segue,完成界面跳轉


接下來研究performSegueWithIdentifier:sender:方法的完全履行進程

[self performSegueWithIdentifier:@“login2contacts” sender:nil];

// 這個self是來源控制器

根據identifierstoryboard中找到對應的線,新建UIStoryboardSegue對象

設置Segue對象的sourceViewController(來源控制器)

新建并且設置Segue對象的destinationViewController(目標控制器)

performSegueWithIdentifier:sender:

調用sourceViewController的下面方法,做1些跳轉前的準備工作并且傳入創建好的Segue對象

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;

// 這個sender是當初performSegueWithIdentifier:sender:中傳入的sender


調用Segue對象的- (void)perform;方法開始履行界面跳轉操作

獲得sourceViewController所在的UINavigationController

調用UINavigationControllerpush方法將destinationViewController壓入棧中,完成跳轉


Sender參數的傳遞

[self performSegueWithIdentifier:@“login2contacts” sender:@“jack”];


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;


控制器的數據傳遞


控制器之間的數據傳遞主要有2種情況:順傳和逆傳

順傳

控制器的跳轉方向: A  C

數據的傳遞方向    : A  C

數據的傳遞方式    :  AprepareForSegue:sender:方法中根據segue參數獲得destinationViewController, 也就是控制器C, 直接給控制器C傳遞數據

(要在CviewDidLoad方法中獲得數據,來賦值給界面上的UI控件)



逆傳

控制器的跳轉方向: A  C

數據的傳遞方向    : C  A

數據的傳遞方式    :  A成為C的代理, C中調用A的代理方法,通過代理方法的參數傳遞數據給A



1.UIWindow

* 主窗口的概念

* 新建UIWindow


2.UIViewController

* 控制器的創建方式

* 控制器view的創建方式

* view的懶加載

* loadViewviewDidLoadviewDidUnloaddidReceiveMemoryWarning


3.UINavigationController

* 通過設置演示基本用處

* 通過非storyboard方式,感受導航的作用

1> 創建導航控制器

2> 設置UIWindow的根控制器

3> push 1個、2個、3 子控制器

4> 解釋push的原理(棧、導航控制器的管理進程)

5> 棧底、棧頂控制器的概念

6> 如何設置導航欄上面的內容、返回文字的設置

7> pop的方法使用

8> pushaddChildviewControllerschildViewController的關系


* 通過storyboard方式,感受導航的作用


4.UIViewController的生命周期方法、AppDelegate的生命周期方法



如何創建1個控制器



控制器常見的創建方式有以下幾種

通過storyboard創建


直接創建

控制器常見的創建方式有以下幾種

通過storyboard創建


直接創建

GYLViewController *nj = [[GYLViewController alloc] init];


指定xib文件來創建

GYLViewController *nj = [[GYLViewController alloc] initWithNibName:@”GYLViewController" bundle:nil];


先加載storyboard文件(Teststoryboard的文件名)

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];


接著初始化storyboard中的控制器

初始化初始控制器(箭頭所指的控制器)

GYLViewController *nj = [storyboard instantiateInitialViewController];


通過1個標識初始化對應的控制器

GYLViewController *nj = [storyboard instantiateViewControllerWithIdentifier:@”nj"];




控制器view的延遲加載



控制器的view是延遲加載的:用到時再加載


可以用isViewLoaded方法判斷1個UIViewControllerview是不是已被加載


控制器的view加載終了就會調用viewDidLoad方法




多控制器


1個iOSapp很少只由1個控制器組成,除非這個app極為簡單


app中有多個控制器的時候,我們就需要對這些控制器進行管理


有多個view時,可以用1個大的view去管理1個或多個小view


控制器也是如此,用1個控制器去管理其他多個控制器


比如,用1個控制器A去管理3控制器BCD

控制器A被稱為控制器BCD父控制器

控制器BCD的被稱為控制器A子控制器


為了便于管理控制器,iOS提供了 生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生

------分隔線----------------------------
分享到:
------分隔線----------------------------
為碼而活
積分:4237
15粉絲
7關注
欄目熱點
關閉
程序員人生
主站蜘蛛池模板: 91亚洲精品中文字幕 | 亚洲人体视频 | 国产成人在线看 | 91网站免费观看 | 精品一区二区在线播放 | www.成人.com | www.亚洲免费 | 国内福利视频 | 国产精品久久久亚洲 | aⅴ色国产 欧美 | 天天摸天天操天天干 | 国产精品综合网 | 国内毛片毛片 | 一区二区三区精品 | 黄p网站 | 国产经典一区二区三区 | 国产一级特黄aaa | 亚洲在线观看视频 | 日韩欧美精品一区二区 | 欧洲一区| 成人免费乱码大片a毛片视频网站 | 99热一区| 四季久久免费一区二区三区四区 | 亚洲国产精品久久久久久 | 国产精品免费一区二区 | 在线一区视频 | 日韩美女乱淫aaa高清视频 | 国产精品久久久久久久久久东京 | 欧美日韩精品一区二区在线播放 | 国产一区不卡在线 | 黄色av网站在线观看 | 精品美女在线观看 | 成av在线| 欧美性受xxxx黑人xyx | 国产一二区免费视频 | 爱爱小视频日本 | 91麻豆精品国产91久久久久久 | av成人一区二区 | 欧美日韩激情在线一区二区三区 | 成人国产综合 | 新电影天堂 |