国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS中UITabBarControlle的使用詳細(xì)教程

2020-02-19 15:55:24
字體:
供稿:網(wǎng)友

  下面是小編給大家分享的一篇iOS中UITabBarControlle的使用詳細(xì)教程,感興趣的朋友跟小編一起來了解一下吧!

  UITabBarController的基本使用

  一、簡(jiǎn)單介紹

  UITabBarController和UINavigationController類似,UITabBarController也可以輕松地管理多個(gè)控制器,輕松完成控制器之間的切換,典型的例子就是QQ、微信等應(yīng)?。

201512393748354.png (645×307)

  二、UITabBarController的使用

  1.使用步驟:

  (1)初始化UITabBarController

  (2)設(shè)置UIWindow的rootViewController為UITabBarController

  (3)創(chuàng)建相應(yīng)的子控制器(viewcontroller)

  (4)把子控制器添加到UITabBarController

  2.代碼示例

  新建一個(gè)空的文件,在Application的代理中編碼

  YYAppDelegate.m文件

  復(fù)制代碼 代碼如下:

  //

  // YYAppDelegate.m

  // 01-UITabBar控制器基本使用

  //

  // Created by 孔醫(yī)己 on 14-6-7.

  // Copyright (c) 2014年 itcast. All rights reserved.

  //

  #import "YYAppDelegate.h"

  @implementation YYAppDelegate

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

  {

  //1.創(chuàng)建Window

  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

  self.window.backgroundColor = [UIColor whiteColor];

  //a.初始化一個(gè)tabBar控制器

  UITabBarController *tb=[[UITabBarController alloc]init];

  //設(shè)置控制器為Window的根控制器

  self.window.rootViewController=tb;

  //b.創(chuàng)建子控制器

  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=@"聯(lián)系人";

  c2.tabBarItem.image=[UIImage imageNamed:@"tab_buddy_nor"];

  UIViewController *c3=[[UIViewController alloc]init];

  c3.tabBarItem.title=@"動(dòng)態(tài)";

  c3.tabBarItem.image=[UIImage imageNamed:@"tab_qworld_nor"];

  UIViewController *c4=[[UIViewController alloc]init];

  c4.tabBarItem.title=@"設(shè)置";

  c4.tabBarItem.image=[UIImage imageNamed:@"tab_me_nor"];

  //c.添加子控制器到ITabBarController中

  //c.1第一種方式

  // [tb addChildViewController:c1];

  // [tb addChildViewController:c2];

  //c.2第二種方式

  tb.viewControllers=@[c1,c2,c3,c4];

  //2.設(shè)置Window為主窗口并顯示出來

  [self.window makeKeyAndVisible];

  return YES;

  }

  @end

  實(shí)現(xiàn)效果:

201512393907321.png (640×960)

  三、重要說明

  1.UITabBar

  下方的工具條稱為UITabBar ,如果UITabBarController有N個(gè)子控制器,那么UITabBar內(nèi)部就會(huì)有N 個(gè)UITabBarButton作為子控件與之對(duì)應(yīng)。

  注意:UITabBarButton在UITabBar中得位置是均分的,UITabBar的高度為49。

  在上面的程序中,UITabBarController有4個(gè)子控制器,所以UITabBar中有4個(gè)UITabBarButton,UITabBar的結(jié)構(gòu)?大致如下圖所示:

201512393950263.png (524×261)

  2.UITabBarButton

  UITabBarButton?面顯?什么內(nèi)容,由對(duì)應(yīng)子控制器的tabBarItem屬性來決定

  c1.tabBarItem.title=@"消息";

  c1.tabBarItem.image=[UIImage imageNamed:@"tab_recent_nor"];

201512394012185.png (524×338)

  3.有兩種方式可以往UITabBarController中添加子控制器

  (1)[tb addChildViewController:c1];

  (2)tb.viewControllers=@[c1,c2,c3,c4];

  注意:展示的順序和添加的順序一致,和導(dǎo)航控制器中不同,展現(xiàn)在眼前的是第一個(gè)添加的控制器對(duì)應(yīng)的View。

  UITabBarController生命周期(使用storyoard搭建) 一、UITabBarController在storyoard中得搭建

  1.新建一個(gè)項(xiàng)目,把storyboard中默認(rèn)的控制器刪除,拖UITab Bar Controller。

  2.創(chuàng)建viewcontroller,添加到UITab Bar Controller中去(連線)。

201512394036062.png (503×473)

  注意點(diǎn):連線的順序就是將來顯示的順序,顯示在眼前的為第一個(gè)連線的view。

  提示:控制器的界面對(duì)應(yīng)的tabbarbutton和圖片顯示什么內(nèi)容,由它的控制器確定。

  3.設(shè)置子控制器的UITabBar等信息。

201512394053803.png (1344×500)

  4.運(yùn)行效果

201512394114892.png (640×960)

  二、UITabBarController的生命周期演示

  思路:新建三個(gè)控制器類來對(duì)控制器進(jìn)行分別管理,重寫內(nèi)部的生命周期方法就可以了解UITabBarController內(nèi)部管理機(jī)制。

  分析代碼:

  復(fù)制代碼 代碼如下:

  //

  // YYbaseViewController.m

  // 02-uitabbarcontroller

  //

  // Created by 孔醫(yī)己 on 14-6-8.

  // Copyright (c) 2014年 itcast. All rights reserved.

  //

  #import "YYbaseViewController.h"

  @interface YYbaseViewController ()

  @end

  復(fù)制代碼 代碼如下:

  @implementation YYbaseViewController

  // 當(dāng)控制器的view加載完畢就調(diào)用

  - (void)viewDidLoad

  {

  [super viewDidLoad];

  NSLog(@"%@ - 控制器的view加載完畢", [self class]);

  }

  // 控制器即將顯示的時(shí)候調(diào)用

  - (void)viewWillAppear:(BOOL)animated

  {

  [super viewWillAppear:YES];

  NSLog(@"%@ - 控制器即將顯示", [self class]);

  }

  // 控制器完全顯示的時(shí)候調(diào)用

  - (void)viewDidAppear:(BOOL)animated

  {

  [super viewDidAppear:animated];

  NSLog(@"%@ - 控制器完全顯示", [self class]);

  }

  // 控制器即將消失的時(shí)候調(diào)用

  - (void)viewWillDisappear:(BOOL)animated

  {

  [super viewWillDisappear:animated];

  NSLog(@"%@ - 控制器即將消失", [self class]);

  }

  // 控制器完全消失的時(shí)候調(diào)用

  - (void)viewDidDisappear:(BOOL)animated

  {

  [super viewDidDisappear:animated];

  NSLog(@"%@ - 控制器完全消失", [self class]);

  }

  - (void)viewWillUnload

  {

  [super viewWillUnload];

  NSLog(@"%@ - view即將被銷毀", [self class]);

  }

  - (void)viewDidUnload

  {

  [super viewDidUnload];

  NSLog(@"%@ - view完全被銷毀", [self class]);

  }

  - (void)dealloc

  {

  NSLog(@"%@", [self class]);

  }

  @end

  (1)運(yùn)行程序,打印輸出為:

201512394133795.png (706×64)

  說明:當(dāng)把三個(gè)子控制器都添加給UITabBarController來管理后,當(dāng)程序啟動(dòng)時(shí)它只會(huì)加載第一個(gè)添加的控制器的view。

  (2)點(diǎn)擊聯(lián)系人按鈕,切換到第二個(gè)界面。打印輸出為:

201512394211525.png (677×120)

  說明:先把第一個(gè)view移開,再把新的view添加上去,但是第一個(gè)view并沒有被銷毀。

  (3)重新點(diǎn)擊消息界面,打印如下:

201512394226945.png (695×168)

  說明:先重新切換到消息界面,one控制器直接即將顯示,沒有進(jìn)行加載證明了(2)中第一個(gè)view移除后并沒有被銷毀(因?yàn)樗目刂破鬟€存在,有一個(gè)強(qiáng)引用引用著它),且two的view移除后也沒有被銷毀。無論怎么切換,控制器和view都不會(huì)被銷毀。

  UINavigationController和UITabBarController一個(gè)通過棧來管理,一個(gè)通過普通的數(shù)組來進(jìn)行管理。

  補(bǔ)充說明:UITabBarController中的UITabBar實(shí)際高度為49.

  在Application的下面方法中打印UITabBar的frame進(jìn)行查看。

  復(fù)制代碼 代碼如下:

  - (void)applicationDidBecomeActive:(UIApplication *)application

  {

  // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

  UITabBarController *tb=(UITabBarController*)self.window.rootViewController;

  NSLog(@"%@",NSStringFromCGRect(tb.tabBar.frame));

  }

  打印結(jié)果為:

201512394253189.png (668×73)

  以上就是關(guān)于iOS中UITabBarControlle的使用詳細(xì)教程了,更多相關(guān)內(nèi)容請(qǐng)繼續(xù)關(guān)注武林技術(shù)頻道。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 广东省| 横峰县| 潍坊市| 姚安县| 甘泉县| 扎兰屯市| 铁岭县| 鹤山市| 嘉黎县| 湾仔区| 中宁县| 宾阳县| 通许县| 肇源县| 阜城县| 陇川县| 牡丹江市| 新巴尔虎左旗| 济宁市| 奎屯市| 平昌县| 南京市| 庆元县| 谷城县| 九龙县| 新巴尔虎右旗| 易门县| 义乌市| 西城区| 昌吉市| 城固县| 革吉县| 仪陇县| 宁波市| 正宁县| 寿宁县| 寿宁县| 萝北县| 吴桥县| 屏东县| 贡山|