1.0 多控制器管理(附:Demo),1.0demo

來源:互聯網
上載者:User

1.0 多控制器管理(附:Demo),1.0demo

控制器 : 
  • 一個iOS的app很少只由一個控制器組成,除非這個app極其簡單
  • 當app中有多個控制器的時候,我們就需要對這些控制器進行管理
  • 有多個view時,可以用一個大的view去管理1個或者多個小view,控制器也是如此,用1個控制器去管理其他多個控制器
  • 比如,用一個控制器A去管理3個控制器B、C、D,控制器A被稱為控制器B、C、D的“父控制器”,控制器B、C、D的被稱為控制器A的“子控制器”
  UIViewController的建立: 
1.直接代碼建立(alloc+init)
2.通過 Xib 檔案建立
3.通過 storyboard 建立
   1.1.1 控制器的建立 - alloc+init步驟: AppDelegate.m
 1 #import "AppDelegate.h" 2 #import "TDViewController.h" 3  4 @interfaceAppDelegate () 5 @end 6  7 @implementation AppDelegate 8   9 //應用程式啟動完成,調用此方法;如果因為記憶體等原因,應用程式被作業系統幹掉,再次點擊表徵圖,會調用此方法!10 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {11  12   // 1. 執行個體化UIWindow(特殊的UIView)13   self.window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds];14  15   // 2.alloc init 方法( 執行個體化視圖控制器)16   TDViewController *vc = [[TDViewControlleralloc] init];17  18   self.window.rootViewController = vc; // 設定根控制器(把視圖控制器添加到window視窗的根視圖上)19   [self.windowmakeKeyAndVisible];     // 讓視窗變成主視窗並且可見20 21   returnYES;22 }23 ……………

 

建立一個控制器:TDViewController,繼承自 UIViewController TDViewController.m
 1 #import "TDViewController.h" 2  3 @interfaceTDViewController () 4 @end 5  6 @implementation TDViewController 7  8 - (void)viewDidLoad { 9   [superviewDidLoad];10   // Do any additional setup after loading the view.11   NSLog(@"你載入的是 TDViewController");12 }13 ……………

列印輸出:
2016-01-19 18:44:11.706 UIViewController(alloc+init)[2653:418332] 你載入的是 TDViewController
    1.1.2 控制器的建立 - Xib關於報錯:
報錯:'-[UIViewController _loadViewFromNibNamed:bundle:] was unable to load a nib named “TDView"'解決:拖一個view
報錯:'-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "TDView" nib but the view outlet was not set.'解決: 在xib 的 File‘s Ower上,綁定class到TDViewController,再右鍵View連線
 步驟:建立一個TDView.xib AppDelegate.m
 1 #import "AppDelegate.h" 2 #import "TDViewController.h" 3  4 @interfaceAppDelegate () 5 @end 6  7 @implementation AppDelegate 8   9 //應用程式啟動完成,調用此方法;如果因為記憶體等原因,應用程式被作業系統幹掉,再次點擊表徵圖,會調用此方法!10 - (BOOL)application:(UIApplication *)application11     didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {12 13   // 1.執行個體化UIWindow(特殊的UIView)14   self.window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds];15  16   // 2. 載入指定的xib檔案17   TDViewController *vc =18       [[TDViewControlleralloc] initWithNibName:@"TDView"bundle:nil];19 20   self.window.rootViewController = vc; // 設定根控制器(把視圖控制器添加到window視窗的根視圖上)21   [self.windowmakeKeyAndVisible];     // 讓視窗變成主視窗並且可見22 23   returnYES;24 }25 ……………

 

建立一個控制器:TDViewController,繼承自 UIViewController  TDViewController.m
 1 #import "TDViewController.h" 2  3 @interfaceTDViewController () 4 @end 5  6 @implementation TDViewController 7  8 - (void)viewDidLoad { 9   [superviewDidLoad];10   // Do any additional setup after loading the view.11   NSLog(@"你載入的是 TDViewController");12 }13 ……………
 列印輸出: 
2016-01-19 19:08:43.400 UIViewController(Xib)[3121:549327] 你載入的是 TDViewController
    1.1.3 控制器的建立 - sb 步驟:建立一個TD.storyboard AppDelegate.m
 1 #import "AppDelegate.h" 2 #import "TDViewController.h" 3  4 @interfaceAppDelegate () 5 @end 6  7 @implementation AppDelegate 8   9 //應用程式啟動完成,調用此方法;如果因為記憶體等原因,應用程式被作業系統幹掉,再次點擊表徵圖,會調用此方法!10 -(BOOL)application:(UIApplication *)application11     didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {12 13   // 1.執行個體化UIWindow(特殊的UIView)14   self.window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds];15  16   // 2. 先載入sb檔案(sb 裡面的 Class 要指向要建立的控制器的類名)(bundle 傳nil 預設就是main bundle)17   UIStoryboard *sb = [UIStoryboardstoryboardWithName:@"TD"bundle:nil];18  19   // 3.接著初始化storyboard中的控制器20   // 方法1:初始化“初始控制器”(sb中箭頭所指的控制器)<通過載入sb檔案來建立控制器的視圖,即視圖控制器>21   TDViewController *vc = [sb instantiateInitialViewController];22  23   // 方法2:通過一個標識,初始化對應的控制器(需要在sb上的控制器設定 Storyboard ID)24   TDViewController *vc = [sb instantiateViewControllerWithIdentifier:@"TD"];25 26   self.window.rootViewController = vc; // 設定根控制器(把視圖控制器添加到window視窗的根視圖上)27   [self.windowmakeKeyAndVisible];     // 讓視窗變成主視窗並且可見28    29   returnYES;30 }31 ……………

 

 建立一個控制器:TDViewController,繼承自 UIViewController  TDViewController.m
 1 #import "TDViewController.h" 2  3 @interfaceTDViewController () 4 @end 5  6 @implementation TDViewController 7  8 - (void)viewDidLoad { 9   [superviewDidLoad];10   // Do any additional setup after loading the view.11   NSLog(@"你載入的是 TDViewController");12 }13 ……………

 

列印輸出:
2016-01-19 19:19:53.029 UIViewController(storyboard)[3381:616265] 你載入的是 TDViewController
     Demo 下載: https://yunpan.cn/crcML8JCvLjsV (提取碼:1fdc)    如果你覺得本篇文章對你有所協助,請點擊右下部“推薦”,^_^   作者:藍田(Loto)
出處:http://www.cnblogs.com/shorfng/
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連。  
如有疑問,請發送郵件至 shorfng@126.com 聯絡我。   By:藍田(Loto)        

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.