多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

UIWindow的常見屬性以及設置

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

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關注
欄目熱點
關閉
程序員人生
主站蜘蛛池模板: 三级在线国产 | 免费一级欧美片片线观看 | 久久国产精品视频 | 日本不卡在线视频 | 亚洲春色另类小说 | 香蕉在线精品视频在线观看2 | 日韩乱轮 | 日本aa大片 | 精品国产一区二区三区不卡在线 | xxxxx网| 欧美18毛片免费看 | 国产三级自拍视频 | 欧美在线视频播放 | 视频一区二区国产无限在线观看 | 国产精品国产亚洲精品看不卡 | 国产在线乱码在线视频 | 国产成人精品视频 | 欧美18 videosex69| 岛国一区 | 久久视频精品53在线观看 | 图片区小说区校园 | 亚洲最大视频网 | 免费高清毛片在线播放视频 | 久久99国产精一区二区三区! | 成人永久福利免费观看 | 亚洲最大福利网 | 久久精品国产99久久无毒不卡 | 亚洲天堂精品视频 | 日韩 欧美 亚洲 中文字幕 | h视频免费网站 | 亚洲都市春色系列小说类型 | 国产精品久久久久久吹潮 | 欧美在线观看一区二区三区 | 日韩欧美亚洲另类 | 国产日韩久久 | 五月网| 激情爱爱网站 | 国产日韩在线观看视频 | 美女无遮挡免费视频网站 | 日本www网站 | 国产一级一级一级成人毛片 |