<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      IOS的控制器

      控制器簡單來說,就是用來做界面跳轉的,類似于 Android 的Intent

       

      1.創(chuàng)建一個控制器

       1 控制器的常見的創(chuàng)建方式
       2 
       3 1)通過storyboard創(chuàng)建
       4 
       5 //直接創(chuàng)建
       6 NJViewController *nj = [[NJViewController alloc]init];
       7 
       8 //指定xib文件
       9 NJViewcontroller *nj = [[NJViewController alloc]
      10 initWithNibName:@"NJViewController" bundle:nil];
      11 
      12 //先加載storyboard文件(Test是stroyboard的文件名)
      13 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
      14 
      15 接著初始化storyboard中的控制器
      16 初始化"初始控制器"(箭頭所指的控制器)
      17 NJViewController *nj = [storyboard instantiateInitialViewController];
      18 
      19 通過一個標識初始化對應的控制器
      20 NJViewController *nj=[storyboard instantiateViewControllerWithIdentifier:@"nj"];

      MJViewController的view的創(chuàng)建圖

      控制器的加載

      1 1.控制器的view是延遲加載的,用到時再加載
      2 2.可以用isViewLoaded方法判斷一個UIViewController的view是否已經被加載
      3 3.控制器的view加載完畢就會調用viewDidLoad方法

      多控制器

       1 1.一個ios的app很少只由一個控制器組成,除非這個app極其簡單
       2 2.當app中有多個控制器的時候,我們就需要對這些控制器進行管理
       3 3.有多個view時,可以用一個大得view去管理1個或者多個小view
       4 4.控制器也是如此,用1個控制器去管理其他多個控制器
       5  
       6 比如:
       7        用一個控制器A 去管理3個控制器B、C、D 控制器A被稱為控制器B、C、D 的"父控制器",控制器 B、C、D  的被稱為控制器A的子控制器
       8 
       9 為了便于管理控制器,IOS提供了2個比較特殊的控制器
      10 UINavigationController
      11 UITabBarController

      UINavigationController

      利用UINavigationController,可以輕松地管理多個控制器,輕松完成控制器之間的切換,典型例子就是系統自帶的"設置"應用

      UINavigationController的使用步驟

       1 1.初始化UINavigationController
       2 2.設置UIWindow的rootViewController為UINavigationController
       3 3.根據具體情況,通過push方法添加對應個數的子控制器
       4 
       5 UINavigationController以棧的形式保存子控制器
       6 @property(nonatomic,copy)NSArray *viewControllers;
       7 @property(nonatomic,readonly)NSArray *childViewControllers;
       8 
       9 使用push方法能將某個控制器壓入棧
      10 -(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
      11 
      12 使用pop方法可以移除控制器
      13 //將棧頂的控制器移除
      14 -(UIViewController *)popViewControllerAnimated:(BOOL)animated;
      15 //回到指定的子控制器
      16 -(NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
      17 //回到根控制器(棧底控制器)
      18 -(NSArray *)popToRootViewControolerAnimated:(BOOL) animated;

      修改導航欄的內容

       1 導航欄的內容由棧頂控制器的navigationitem屬性決定
       2 
       3 UINavigationItem有以下屬性影響著導航欄的內容
       4 //左上角的返回按鈕
       5 @property(nonatomic,retain)UIBarButtonItem *backBarButtonItem;
       6 //中間的標題視圖
       7 @property(nonatomic, retain)UIView *titleView;
       8 //中間的標題文字
       9 @property(nonatomic,copy) NSString  *title;
      10 //左上角的視圖
      11 @property(nonatomic,retain)UIBarButtonItem *leftBarButtonItem;
      12 //UIBarButtonItem *rightBarButtonItem 右上角的視圖
      13 @property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;

      Segue

      Storyboard上每一根用來界面跳轉的線,都是一個UIStoryboardSegue對象(簡稱Segue)

      Segue的屬性

      每一個segue對象,都有3個屬性

      1 //唯一標識
      2 @property(nonatomic, readonly) NSString *identifier;
      3 //來源控制器
      4 @property(nonatomic,readonly) id sourceViewController;
      5 //目標控制器
      6 @property(nonatomic,readonly) id destinationViewController;

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

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

      手動型:需要通過寫代碼手動執(zhí)行Segue,才能完成界面跳轉

       

      自動型:

      手動型:

      performSegueWithldentifier:sender:

      利用performSegueWithIdentifier:方法可以執(zhí)行某個Segue,完成界面跳轉

      接下來研究performSegueWithIdentifier:sender:方法的完整執(zhí)行過程

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

      //這個self是來源控制器

      1.根據identifier去storyboard中找到對應的線,新建UIStoryboardSegue對象

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

      新建并且設置Segue

      2.調用sourceViewController的下面方法,做一些跳轉前的準備工作并且傳入創(chuàng)建好的Segue對象
      
      -(void)prepareForSegue:(UIStoryboardSegue *)segue sender: (id) sender;
      
      //這個sender是當初performSegueWithIdentifier:sender:中傳入的sender
      
      3.調用Segude對象的-(void)perform;方法開始執(zhí)行界面跳轉操作
      
      取得sourceViewController所在的UINavigationController
      
      調用UINavigationController的push方法將destinationViewController壓入棧中,完成跳轉
      
      [self performSegueWithIdentifier:@"login2contacts" sender:@"jack"];
      
      
      
      -(void)perpareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;

      控制器的數據傳遞

      控制器之間的數據傳遞主要有兩種情況:順傳和逆?zhèn)?/p>

      順傳

      1 控制器的跳轉方向:A-->C
      2 數據的傳遞方向:  A--->C
      3 數據的傳遞方式: 在A的 perpareForSeque:sender 方法中根據segue參數取得destinationViewController,也就是控制器C,直接給控制器C傳遞數據
      4 (要在C的viewDidLoad方法中取得數據,來賦值給界面上的UI控件)

      逆?zhèn)?/p>

      1 控制器的跳轉方向:A -->C
      2 數據的傳遞方向: C-->A
      3 數據的傳遞方式:讓A成為C的代理,在C中調用A的代理方法,通過代理方法的參數傳遞數據給A

       

      posted @ 2015-05-30 23:35  王世楨  閱讀(839)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品视频一区二区亚瑟| 99精品日本二区留学生| 无遮挡粉嫩小泬久久久久久久| 欧美日韩精品一区二区三区高清视频 | 大肉大捧一进一出视频| 亚洲综合伊人久久大杳蕉| 免费国产一区二区不卡| 一本色道久久加勒比综合| 中文字幕亚洲综合第一页| 强插少妇视频一区二区三区| 亚洲综合精品第一页| 亚洲国产精品无码av| 国产亚洲精品第一综合麻豆| 欧美人成精品网站播放| 蜜臀av人妻国产精品建身房| 国产在线一区二区不卡| 亚洲精品无码成人A片九色播放| 国精产品一品二品国精在线观看| 浪潮av色综合久久天堂| 久热这里有精彩视频免费| 一本无码人妻在中文字幕免费| 天天躁日日躁狠狠躁性色avq| 成人无码午夜在线观看| 国产福利精品一区二区| 疯狂做受xxxx高潮视频免费| 亚洲日本精品一区二区| 国产成人精品电影在线观看| 国产精品国产三级在线专区| 亚洲高潮喷水无码AV电影| 国产呻吟久久久久久久92| 无码专区 人妻系列 在线| 亚洲另类无码一区二区三区| 亚洲人成电影网站色mp4| 丁香五月天综合缴情网| 亚洲成A人片在线观看的电影 | 日韩欧美在线综合网另类| 成人国产精品免费网站| 国产成人综合欧美精品久久| 深夜福利资源在线观看| 精品人人妻人人澡人人爽人人| 最新日韩精品中文字幕|