分栏控制器和导航栏目tabBarItem,UINavigationController
//
// AppDelegate.m
// TabBarControllerDemo
//
// Created by qianfeng on 15/9/22.
// Copyright (c) 2015年 qianfeng. All rights reserved.
//
#import "AppDelegate.h"
#import "ViewController1.h"
#import "ViewController2.h"
#import "ViewController3.h"
#import "ViewController4.h"
#import "ViewController5.h"
#import "ViewController6.h"
#import "ViewController7.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
#pragma mark ------------------------创建customTabBar
- (void)customTabBar
{
//取出分栏控制器
UITabBarController *vc = (id)self.window.rootViewController;
//bar样式
vc.tabBar.barStyle = UIBarStyleBlack;
//半透明度
vc.tabBar.translucent = NO;
//tint color是设置你选中的那个tabBar的颜色,默认是蓝色
vc.tabBar.tintColor = [UIColor greenColor];
//bar tint color
vc.tabBar.barTintColor = [UIColor whiteColor];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#pragma mark ------------------------VC1
ViewController1 *vc1 = [[ViewController1 alloc] init];
vc1.title = @"微信";
//vc1.view.backgroundColor = [UIColor whiteColor];
vc1.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:1];
vc1.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"home" image:[UIImage imageNamed:@"tabbar_mainframeHL@2x"] tag:2];
//创建导航控制器
UINavigationController *nvc1 = [[UINavigationController alloc]initWithRootViewController:vc1];
nvc1.navigationBar.barStyle = UIBarStyleBlack;
//nvc1.navigationBar.barTintColor = [UIColor redColor];
nvc1.navigationBar.tintColor = [UIColor yellowColor];//字体颜色
//nvc1.navigationBar.translucent = NO;
#pragma mark ------------------------VC2
ViewController2 *vc2 = [[ViewController2 alloc] init];
vc2.title = @"通讯录";
vc2.view.backgroundColor = [UIColor whiteColor];
vc2.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"通讯录" image:[UIImage imageNamed:@"tabbar_contactsHL@2x"] tag:2];
//创建导航控制器
UINavigationController *nvc2 = [[UINavigationController alloc]initWithRootViewController:vc2];
nvc2.navigationBar.tintColor = [UIColor whiteColor];
nvc2.navigationBar.barStyle = UIBarStyleBlack;//背景是黑色
#pragma mark ------------------------VC3
ViewController3 *vc3 = [[ViewController3 alloc] init];
vc3.title = @"发现";
vc3.view.backgroundColor = [UIColor whiteColor];
vc3.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"发现" image:[UIImage imageNamed:@"tabbar_discover@2x"] selectedImage:[UIImage imageNamed:@"tabbar_discoverHL@2x"]];
vc3.tabBarItem.tag = 3;
//创建导航控制器
UINavigationController *nvc = [[UINavigationController alloc]initWithRootViewController:vc3];
nvc.navigationBar.barStyle = UIBarStyleBlack;//背景是黑色
#pragma mark ------------------------VC4
ViewController4 *vc4 = [[ViewController4 alloc] init];
vc4.title = @"我";
vc4.view.backgroundColor = [UIColor whiteColor];
vc4.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"我" image:[UIImage imageNamed:@"tabbar_me@2x"] tag:4];
//创建导航控制器
UINavigationController *nvc4 = [[UINavigationController alloc]initWithRootViewController:vc4];
nvc4.navigationBar.barStyle = UIBarStyleBlack;//背景是黑色
#pragma mark ------------------------VC5
ViewController5 *vc5 = [[ViewController5 alloc] init];
vc5.title = @"页五";
vc5.view.backgroundColor = [UIColor cyanColor];
vc5.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:5];
#pragma mark ------------------------VC6
ViewController6 *vc6 = [[ViewController6 alloc] init];
vc6.title = @"页六";
vc6.view.backgroundColor = [UIColor orangeColor];
vc6.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemTopRated tag:6];
#pragma mark ------------------------VC7
ViewController7 *vc7 = [[ViewController7 alloc]init];
vc7.title = @"页七";
vc7.view.backgroundColor = [UIColor blueColor];
vc7.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemRecents tag:7];
#pragma mark ------------------------创建分栏目控制器等
//分栏控制器 最多能显示五个
UITabBarController *tvc = [[UITabBarController alloc]init];
tvc.viewControllers = @[nvc1,nvc2,nvc,nvc4];//,vc5,vc6,vc7
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds] ];
self.window.backgroundColor = [UIColor whiteColor];
self.window.rootViewController = tvc;
[self customTabBar]; //创建分栏控制器
//设定代理
tvc.delegate = self;
//设置选择控制器
tvc.selectedIndex = 0;
// NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
//
// NSString * value = [ud objectForKey:@"title"];
//
// for (UIViewController *vc in tvc.viewControllers) {
// if ([vc.title isEqualToString:value]) {
// tvc.selectedViewController = vc;
// }
// }
//NSLog(@"%@",NSHomeDirectory());
[self.window makeKeyAndVisible];
return YES;
}
#pragma mark ------------------------ 实现分栏控制器代理方法
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewControll{
//是否可以选择这个控制器,yes 允许选择,no 不允许
// if (viewControll.tabBarItem.tag == 2) {
// return NO;
// }
//
return YES;
}
- (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray *)viewControllers
{
//将要开始编辑的时候,会调用这个方法
for (UIViewController *vc in viewControllers) {
NSLog(@"tag = %ld",vc.tabBarItem.tag);
}
}
- (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed
{
//编辑结束的时候会调用这个方法
for (UIViewController *vc in viewControllers) {
NSLog(@"changed tag = %ld",vc.tabBarItem.tag);
}
}
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
//选择视图控制器之后,调用这个方法
NSLog(@"vc tag = %ld",viewController.tabBarItem.tag);
//是一个单例
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setObject:viewController.title forKey:@"title"];
//写入文件
[ud synchronize];
}
@end
分栏控制器和导航栏目tabBarItem,UINavigationController的更多相关文章
- 设置TabBar分栏控制器上图片的大小问题
我们都知道,iOS因为屏幕分辨率的问题,UID在交付我们iOS开发人员程序配图的时候,一般是三套图,分别对应三种不同的分辨率,对不同size的屏幕系统会自动使用不同像素的图片,我们只需要在命名时给三套 ...
- CSS3-column分栏
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- css笔记 - column分栏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 导航栏控制器和标签栏控制器(UINavigationController和UITabBarController)混用
很多时候,在UI设计方面同时需要使用导航控制器和标签栏控制器,这时,需要掌握如何设计结合使用这两种不同控制器.比如手机QQ,程序有三个标签 栏(分别为消息.联系人.动态),同时在选择某个联系人或者会话 ...
- iOS:视图切换的第二种方式:UINavigationController导航栏控制器
UINavigationController:一个以栈的形式管理多视图的容器,负责子控制器之间的跳转.由于以栈的方式管理视图,各个视图的切换就是压栈和出栈操作,所以出栈后的视图会立即销毁. 介绍: & ...
- 简单仿京东"筛选"界面 双导航栏控制器共存 by Nicky.Tsui
大概就是这么一个效果 如图.大概可以看到,"筛选"视图后面有一层视图盖住了后面原来的视图 那么我们可以通过加一个view到导航栏控制器的view里面来实现 //该view作为全局变 ...
- UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
- 选项卡栏控制器(UITabBarController)
选项卡栏控制器管理的每个场景都包含一个UITabBarItem,它包含标题.图像和徽章. 在场景里可以通过tabBarItem属性来获得UITabBarItem的引用.例如:[self.tabBarI ...
- iOS开发UI篇—多控制器和导航控制器简单介绍
iOS开发UI篇—多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...
随机推荐
- linux C错误汇集
问题一: 22.c: In function ‘main’:22.c:8:9: error: empty character constant 解决方法:少了空格
- C++ Code_StatusBar
主题 1. 创建状态栏 并显示 2. 在状态栏中显示进度条 3. MDI文档显示和隐藏状态栏 4. 5. 代码::创建状态栏 并显示 //手动添加3个ICON //////////////// ...
- 对比两个同类型的泛型集合并返回差异泛型集合 ——两个List<类名>的比较
1: /// <summary> 2: /// 对比两个同类型的泛型集合并返回差异泛型集合 3: /// </summary> 4: /// <typeparam nam ...
- 【JavaScript】JavaScript回调函数
什么是Javascript 回调函数? 函数和其他数据一样可以被赋值,删除,拷贝等,所以也可以把函数作为参数传入到另一个函数中. 这个函数就是所谓的回调函数 举例: //不带参数的case fun ...
- 深入了解android平台的jni---注册native函数
注册native函数有两种方法:静态注册和动态注册. 1.静态注册方法 根据函数名找到对应的JNI函数:Java层调用函数时,会从对应的JNI中寻找该函数,如果没有就会报错,如果存在则会建立一个关联联 ...
- Cocos2d-x v3.0 新的事件调度方法 lambda表达式的使用
欢迎添� Cocos2d-x 交流群: 193411763 转载请注明原文出处:http://blog.csdn.net/u012945598/article/details/24603251 Coc ...
- PHP经验——PHPDoc PHP注释的标准文档(翻译自Wiki)
文档注释,无非“//”和“/**/”两种 ,自己写代码,就那么点,适当写几句就好了:但是一个人总有融入团队的一天,团队的交流不是那几句注释和一张嘴能解决的,还需要通用的注释标准. PHPDoc是PHP ...
- Debian的定时执行命令Crontab
转载:http://i.592.net/?post=276 Debian的定时执行命令Crontab,这个相当于Windows的计划任务 想要让Debian定时执行命令就得靠crontab了! ...
- layer.js,,,分享一个好用的弹出层
基本属性: <!DOCTYPE html> <html> <head> <head> <meta content="text/html; ...
- C#中的多态现象
面向对象的特征封装.继承和多态.Polymorphism(多态性)来源于希腊单词,指“多种形态”.多态性的一个重要特征是方法的调用是在运行时确定而不是编译时.在.NET中用于实现多态性的关键词有vir ...