iOS開發之視圖切換_IOS

來源:互聯網
上載者:User

一、視圖切換

  1. UITabBarController (分頁控制器) - 平行管理檢視
  2. UINavigationController (導航控制器) - 壓棧出棧管理檢視
  3. 模態視窗

二、UITabBarController分頁控制器

  1. UITabBarController是為了利用 頁簽切換視圖 設計的控制器
  2. 該控制器有一個UITabBar控制項,使用者通過點擊UITabBar進行視圖切換
  3. UITabBarController本身會不顯示任何視圖,它只是一個 容器控制器
  4. 為了減少視圖間的耦合,所有UITabBarController的子視圖的相關標題、表徵圖等資訊由子視圖自己控制

注意事項:

  1. UITabBarController會一次性初始化所有子控制器,但預設只載入第一個控制器視圖
  2. 每個視圖控制器都有一個tabBarController屬性,用它來訪問所在的UITabBarController
  3. 每個視圖控制器都有一個tabBarItem屬性,用它來控制UITabBarController的UITabBar上的顯示資訊
  4. tarBarItem的image屬性必須是png格式,並且開啟alpha通道 ,否則無法正常顯示
  5. UITabBarController通常是作為整個程式的rootViewController的,我們需要在程式的window顯示之前就建立好它。

具體步驟如下:

  1. 建立一個UITabBarController對象
  2. 建立UITabBarController中每一個tab對應的要顯示的對象viewController
  3. 通過UITabBarController的viewControllers屬性將要顯示的所有viewController添加到UITabBarController中
  4. 通過設定UITabBarController對象為window.rootViewController,然後顯示window

複製代碼 代碼如下:

//a.初始化一個tabBar控制器
UITabBarController *tarbarVC = [[UITabBarController alloc] init];
//設定控制器為Window的根控制器
self.window.rootViewController = tarbarVC;
//b.建立子控制器
UIViewController *c1 = [[UIViewController alloc] init];
c1.view.backgroundColor = [UIColor grayColor];
c1.view.backgroundColor=[UIColor greenColor];
c1.tabBarItem.title = @"訊息";
c1.tabBarItem.image = [UIImage imageNamed:@"tab_recent_nor"];
c1.tabBarItem.badgeValue = @"123";
UIViewController *c2 = [[UIViewController alloc] init];
c2.view.backgroundColor = [UIColor brownColor];
c2.tabBarItem.title = @"連絡人";
c2.tabBarItem.image = [UIImage imageNamed:@"tab_buddy_nor"];
UIViewController *c3 = [[UIViewController alloc] init];
c3.tabBarItem.title = @"動態";
c3.tabBarItem.image = [UIImage imageNamed:@"tab_qworld_nor"];
UIViewController *c4 = [[UIViewController alloc] init];
c4.tabBarItem.title = @"設定";
c4.tabBarItem.image = [UIImage imageNamed:@"tab_me_nor"];
//c.添加子控制器到ITabBarController中
tarbarVC.viewControllers = @[c1,c2,c3,c4];
//d.設定Window為主視窗並顯示出來
[self.window makeKeyAndVisible];

UITabBarControllerDelegate代理

複製代碼 代碼如下:

#pragma mark 該方法用於控制TabBarItem能不能選中
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;

改變UITabBarController當前顯示視圖的方法

  1. 改變selectedIndex屬性
  2. 改變selectedViewController屬性
  3. 改變viewControllers屬性

三、UINavigationController導航控制器

  1. UINavigationController中的子控制器以棧的形式儲存,只有在棧頂部的控制器才能顯示在介面上
  2. 壓棧pushController,出棧popController
  3. UINavigationController必須有一個根控制器rootViewController
  4. 子控制器通過navigationController屬性訪問UINavigationController
  5. 在棧中的子控制器都有一個導覽列navigationBar,通過navigationItem去控制


UINavigationItem屬於MVC中的Model,封裝了要顯示在UINavigationBar上的資料:

title: 標題
titleView :標題視圖
leftBarButtonItem :左按鈕
rightBarButtonItem :右按鈕

下一個子視圖左側返回按鈕leftBarButtonItem的標題優先順序:

  1. 導覽列返回按鈕backBarButtonItem的標題
  2. 導覽列navigationItem的標題
  3. 視圖控制器的標題

UINavigationController常用的主要方法:

複製代碼 代碼如下:

#pragma mark 壓棧,把控制器壓入導航控制器子控制器棧中
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
#pragma mark 出棧,把導航控制器子控制器棧的棧頂彈出
- (void)popViewControllerAnimated:(BOOL)animated;
#pragma mark 多次出棧直到棧頂為指定控制器
- (void)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
#pragma mark 多次出棧直到棧頂為根控制器
- (void)popToRootViewControllerAnimated:(BOOL)animated;

四、模態視窗

複製代碼 代碼如下:

#pragma mark 從下方彈出指定的視圖控制器,賦予模態,即當前視圖關閉前,其他視圖上的內容無法操作
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion;
#pragma mark 關閉模態視窗,該方法在模態視窗中調用
- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion;

相關文章

聯繫我們

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