TabBar控制器

UITabBarController

跟UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是QQ、微信等应用

UITabBarController的简单使用

UITabBarController的使用步骤

(1)初始化UITabBarController

(2)设置UIWindow的rootViewController 为UITabBarController

(3)根据具体情况,通过addChildViewController方法添加对应个数的自控制器

UITabBarController添加控制器的方式有2种

添加单个子控制器

-(void)addChildViewController:(UIViewController *)childController

设置子控制器数组

@property(nonatomic, copy) NSArray *viewControllers;

modal 控制器切换方式 控制器不会消失。

Main.storyboard

Main.storyboard 中的ID在注册前面的导航控制器里

RegisterTableViewController.h

#import <UIKit/UIKit.h>

@interface RegisterTableViewController : UITableViewController

@end

RegisterTableViewController.m

- (IBAction)backBtn:(id)sender {

//modal

[self dismissViewControllerAnimated:YES completion:^{

NSLog(@"模态窗口消失完成");

//打印窗口的子视图

//        NSLog(@"%@", self.view.window.subviews);

//通过Appdelegate代理来获取窗口

AppDelegate *app = [UIApplication sharedApplication].delegate;

NSLog(@"%@", app.window.subviews);

}];

}

ViewController.m

#import "ViewController.h"

#import "RegisterTableViewController.h"

#import "AppDelegate.h"

@interface ViewController ()

@end

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

//弹出注册控制器

//    RegisterTableViewController *regVc = [[RegisterTableViewController alloc] init];

//UITransitionView 是给模态窗口用 包装注册控制器的view一起往上移

//UILayouContainerView 是导航控制器

//从storyboard 加载控制器

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

id regVc = [storyboard instantiateViewControllerWithIdentifier:@"register"];

[self presentViewController:regVc animated:YES completion:^{

NSLog(@"模态窗口展现完成");

//通过Appdelegate代理来获取窗口

AppDelegate *app = [UIApplication sharedApplication].delegate;

NSLog(@"%@", app.window.subviews);

}];

}

@end

TabBar控制器(代码)

AppDelegate.m

#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

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

// Override point for customization after application launch.

//1.创建窗口

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

//2.设置窗口的根控制器 为Tabbar控制器

//2.1创建tabbar控制器

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

//2.2 设置子控制器

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

vc1.view.backgroundColor = [UIColor redColor];

vc1.tabBarItem.badgeValue = @"123";

//    [tabbarVc addChildViewController:vc1];

//设置UITabbarButton的标题

vc1.tabBarItem.title = @"联系人";

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

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

vc2.view.backgroundColor = [UIColor yellowColor];

//    [tabbarVc addChildViewController:vc2];

vc2.tabBarItem.title = @"动态";

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

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

vc3.view.backgroundColor = [UIColor greenColor];

//    [tabbarVc addChildViewController:vc3];

tabbarVc.viewControllers = @[vc1, vc2, vc3];

vc3.tabBarItem.title = @"设置";

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

window.rootViewController = tabbarVc;

//3.设置窗口为主窗口并可见

[window makeKeyAndVisible];

self.window = window;

return YES;

}

TabBar控制器(main.storyboard)

tabBar 的生命周期与 Navigation 不同 ,两个View在一起。

时间: 2024-10-12 22:46:03

TabBar控制器的相关文章

iOS tabbar 控制器基本使用

RootViewController *rootVC=[[RootViewController alloc] init] SignInViewController *signVC = [[SignInViewController alloc]init]; //如果在这里指定tabitem标题,则在FirstViewController中指定self.tabBarItem.title则不生效 signVC.title = @"打卡"; UITabBarItem *signItem = [

自定义tabBar控制器

一.控制器部分 #import "JRTabBarConroller.h" #import "JRTabBar.h" @interface JRTabBarConroller ()<JRTabBarProtocol> @property(nonatomic,weak) UIViewController * currentVC; @end @implementation JRTabBarConroller - (void)viewDidLoad { [su

Swift 标签控制器(tabbar添加提醒和控制器)

// Override point for customization after application launch. //初始化window, 大小为设备物理大小 self.window = UIWindow(frame: UIScreen.mainScreen().bounds) //把window的背景颜色改成白色 self.window?.backgroundColor = UIColor.whiteColor() //让window作为主window显示 self.window?.

iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法

一.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有两种方法. 1.通过方法 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion跳转 相

iOS CoCoa编程中视图控制器与视图类(转)

分类: iPhone2012-05-28 11:19 837人阅读 评论(0) 收藏 举报 cocoa编程iosuinavigationcontrolleruiviewiphone iPhone编程规则是:一个窗口,多个视图. UIView是iPhone屏幕上很多控件的基础类.每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊的UIView)内的众多UIView及其专门化子类构建的. 显示数据的视图: UITextView UILabel UIImageView UIWebV

自定义底部tabbar的两种方式

第一种:利用系统自带的tabbarItem加一个自定义按钮: #import "SZMTabBarController.h" #import "SZMTabBar.h" #import "SZMHomeViewCtrl.h" #import "SZMNavigationController.h" #import "SZMDiscoerViewCtrl.h" @interface SZMTabBarContr

【iOS开发-79】利用Modal方式实现控制器之间的跳转

利用Modal方法.事实上就是以下两个方法的运用. Modal方式的切换效果是从底部呈现. -(void)clickModal{ WPViewController *wp=[[WPViewController alloc]init]; [self presentViewController:wp animated:YES completion:^{ }]; } -(void)clickDismiss{ [self dismissViewControllerAnimated:YES complet

iOS开发项目篇—03添加导航控制器

iOS开发项目篇—03添加导航控制器 一.简单说明 分析:分析微博应用,我们需要给每个子控制器都添加一个导航控制器(每个子控制器的导航不一样),所以需要新建一个导航控制器,然后把该导航控制器作为window的根控制器,添加的四个子控制器,分别添加在导航控制器上,也就是说整个项目采用当前主流的UI框架,一个UITabBarController管理着四个UINavigationController,而每个UINavigationController则分别管理着“首页”.“消息”.“发现”和“我”这四

关于使用 pushViewController: animated: 方法在下一个控制器中拿不到值的解决方法

如下代码: // 加载一个tabbar控制器 houseMessageTabbarController *houseTabbar = [[houseMessageTabbarController alloc] init]; // 使用创建的模型传递数据 houseTabbar.messageItems = [meterMessageItems objectWithKeyValues:self.houseNameArray[indexPath.row]]; houseTabbar.testTitl