UIViewController添加子控制器(addChildViewController)
//
// TaskHallViewController.m
// yybjproject
//
// Created by bingjun on 15/10/27.
// Copyright © 2015年 bingjun. All rights reserved.
//
#import "TaskHomeHallViewController.h"
#import "UINavigationBar+Awesome.h"
#import "HomeViewController.h"
#import "moreSensationViewController.h"
#import "SVSegmentedControl.h"
#import "TaskListViewController.h"
#import "MyTaskViewController.h"
#import "TaskHallViewController.h"
@interface TaskHomeHallViewController ()
{
MyTaskViewController *_myTaskVc;///< 红人任务控制器
moreSensationViewController *_moreSensationVc;///< 红人榜单控制器
TaskHallViewController *_shopTrolleyVc;///< 清单界面
NSInteger _segmentSelectedIndex;///< 当前segment的index
UIButton *leftBtn;///< 城市的名字
}
@end
@implementation TaskHomeHallViewController
#pragma mark - tileView的一些设置
- (void)segmentedControlChangedValue:(SVSegmentedControl*)segmentedControl {
// [[UIApplication sharedApplication] beginIgnoringInteractionEvents];
segmentedControl.userInteractionEnabled = NO;
if (_segmentSelectedIndex == segmentedControl.selectedSegmentIndex) {
// [[UIApplication sharedApplication] endIgnoringInteractionEvents];
segmentedControl.userInteractionEnabled = YES;
return;
}
UIViewController *beforeVc;
switch (_segmentSelectedIndex) {
case 0:
beforeVc = _myTaskVc;
break;
case 1:
beforeVc = _shopTrolleyVc;
break;
case 2:
beforeVc = _moreSensationVc;
break;
default:
break;
}
//启动后先添加first,大儿子
switch (segmentedControl.selectedSegmentIndex) {
case 0:
{
_segmentSelectedIndex = segmentedControl.selectedSegmentIndex;
//调用addChildViewController之前会自动调用second的willMoveToParentViewController
[self addChildViewController:_myTaskVc];
[_myTaskVc.view setFrame:_myTaskVc.view.frame];
[self transitionFromViewController:beforeVc toViewController:_myTaskVc duration:1.0 options:UIViewAnimationOptionTransitionNone animations:nil completion:^(BOOL finished){
//删除之前first之前手动添加的willMoveToParentViewController
[beforeVc willMoveToParentViewController:nil];
//调用removeFromParentViewController之后会自动调用first的didMoveToParentViewController
[beforeVc removeFromParentViewController];
//addChildViewController之后手动添加的didMoveToParentViewController
[_myTaskVc didMoveToParentViewController:self];
// [[UIApplication sharedApplication] endIgnoringInteractionEvents];
segmentedControl.userInteractionEnabled = YES;
}];
break;
}
case 1:
{
_segmentSelectedIndex = segmentedControl.selectedSegmentIndex;
[self addChildViewController:_shopTrolleyVc];
[_shopTrolleyVc.view setFrame:_myTaskVc.view.frame];
[self transitionFromViewController:beforeVc toViewController:_shopTrolleyVc duration:1.0 options:UIViewAnimationOptionTransitionNone animations:nil completion:^(BOOL finished){
//addChildViewController之后手动添加的didMoveToParentViewController
//删除之前first之前手动添加的willMoveToParentViewController
[beforeVc willMoveToParentViewController:nil];
//调用removeFromParentViewController之后会自动调用first的didMoveToParentViewController
[beforeVc removeFromParentViewController];
[_shopTrolleyVc didMoveToParentViewController:self];
// [[UIApplication sharedApplication] endIgnoringInteractionEvents];
segmentedControl.userInteractionEnabled = YES;
}];
break;
}
case 2:
{
_segmentSelectedIndex = segmentedControl.selectedSegmentIndex;
[self addChildViewController:_moreSensationVc];
[_moreSensationVc.view setFrame:_myTaskVc.view.frame];
[self transitionFromViewController:beforeVc toViewController:_moreSensationVc duration:1.0 options:UIViewAnimationOptionTransitionNone animations:nil completion:^(BOOL finished){
//删除之前first之前手动添加的willMoveToParentViewController
[beforeVc willMoveToParentViewController:nil];
//调用removeFromParentViewController之后会自动调用first的didMoveToParentViewController
[beforeVc removeFromParentViewController];
//addChildViewController之后手动添加的didMoveToParentViewController
[_moreSensationVc didMoveToParentViewController:self];
// [[UIApplication sharedApplication] endIgnoringInteractionEvents];
segmentedControl.userInteractionEnabled = YES;
}];
break;
}
default:
break;
}
}
//设置titleVIew
- (void)initTitleViewOfMyTask
{
NSArray *array;
if (kDeviceWidth > 320) {
array = [NSArray arrayWithObjects:@"任 务", @"红 人", @"榜 单", nil];
}else {
array = [NSArray arrayWithObjects:@"任务", @"红人", @"榜单", nil];
}
SVSegmentedControl *yellowRC = [[SVSegmentedControl alloc] initWithSectionTitles:array];
[yellowRC addTarget:self action:@selector(segmentedControlChangedValue:) forControlEvents:UIControlEventValueChanged];
// yellowRC.crossFadeLabelsOnDrag = YES;
yellowRC.animateToInitialSelection = YES;
yellowRC.font = [UIFont systemFontOfSize:14];
yellowRC.textColor = [UIColor whiteColor];//没有被选中的字体颜色
// yellowRC.titleEdgeInsets = UIEdgeInsetsMake(0, 14, 0, 14);
yellowRC.height = 30;
yellowRC.backgroundTintColor = YSRedProjectColor;//没有被选中的背景颜色
// yellowRC.textShadowColor = [UIColor whiteColor];
[yellowRC setSelectedSegmentIndex:0 animated:NO];
yellowRC.thumb.tintColor = [UIColor whiteColor];//选中的背景颜色
yellowRC.thumb.textColor = YSRedProjectColor;//选中的title字体颜色
yellowRC.thumb.textShadowColor = [UIColor whiteColor];
// yellowRC.thumb.textShadowOffset = CGSizeMake(0, 1);
yellowRC.thumb.gradientIntensity = 0.05;
yellowRC.center = CGPointMake(180, 100);
self.navigationItem.titleView = yellowRC;
_segmentSelectedIndex = 0;
}
//添加右上角按钮
- (void)addLeftBarButtonItemAction
{
CGFloat kLefyViewWidth;
CGFloat kImageViewWidth;
CGFloat kTitleViewWidth;
CGFloat kTitleFontSize;
if (kDeviceWidth > 320) {
kLefyViewWidth = 75.0f;
kImageViewWidth = 14.0f;
kTitleViewWidth = 60.0f;
kTitleFontSize = 13.0f;
}else {
kLefyViewWidth = 60.0f;
kImageViewWidth = 10.0f;
kTitleViewWidth = 50.0f;
kTitleFontSize = 10.0f;
}
UIView *rightItemView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, kLefyViewWidth, 34.0f)];
rightItemView.backgroundColor = [UIColor clearColor];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, (34 - kImageViewWidth) / 2.0f, kImageViewWidth, kImageViewWidth)];
imageView.image = [UIImage imageNamed:@"positionIcon.png"];
imageView.contentMode = UIViewContentModeScaleAspectFit;
[rightItemView addSubview:imageView];
leftBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
User *user = [[User instance] getUserInformation];
if (user.userCity && ![user.userCity isKindOfClass:[NSNull class]]) {
[leftBtn setTitle:user.userCity forState:UIControlStateNormal];
}else {
[leftBtn setTitle:@"暂无" forState:UIControlStateNormal];
}
leftBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
leftBtn.frame=CGRectMake(kImageViewWidth, 0.0f, kTitleViewWidth, 34.0f);
[leftBtn.titleLabel setFont:[UIFont systemFontOfSize:kTitleFontSize]];
[rightItemView addSubview:leftBtn];
UIBarButtonItem *leftItem = [[UIBarButtonItem alloc]initWithCustomView:rightItemView];
self.navigationItem.leftBarButtonItem = leftItem;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[self addLeftBarButtonItemAction];
//设置导航栏颜色
self.navigationController.navigationBar.translucent = YES;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
self.edgesForExtendedLayout = UIRectEdgeNone;
}
[self.navigationController.navigationBar lt_setBackgroundColor:YSRedProjectColor];
HomeViewController *home = [HomeViewController singleton];
// HomeViewController *home = self.navigationController.tabBarController;
[home showTabBar:YES];
//设置titleView
[self initTitleViewOfMyTask];
//生俩儿子
_myTaskVc = [[MyTaskViewController alloc] initWithNibName:@"MyTaskViewController" bundle:nil];
_moreSensationVc = [[moreSensationViewController alloc] initWithNibName:nil bundle:nil];
_shopTrolleyVc = [[TaskHallViewController alloc] initWithNibName:@"TaskHallViewController" bundle:nil];
_shopTrolleyVc.isNeedShowSearchFlag = YES;
//启动后先添加first,大儿子
[self addChildViewController:_myTaskVc];
[_myTaskVc.view setFrame:self.view.frame];
[self.view addSubview:_myTaskVc.view];
[_myTaskVc didMoveToParentViewController:self];
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(update_CityName:)
name:Update_CityName object:nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
HomeViewController *home = [HomeViewController singleton];
[home showTabBar:NO];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
HomeViewController *home = [HomeViewController singleton];
[home hideTabBar:NO];
}
- (void)update_CityName:(NSNotification *)notification
{
NSString *cityName = notification.object;
[leftBtn setTitle:cityName forState:UIControlStateNormal];
}
@end
UIViewController添加子控制器(addChildViewController)的更多相关文章
- 解决UIViewController中添加子控制器viewWillAppear不调用问题
问题描述: 我在UICollectionViewController中添加子控制器数组, 并在cellForItem中把子控制器数组中对应的控制器对应的view添加到了UICollectionView ...
- ViewController添加子控制器 并且弹出
/** * 初始化子控制器 */ - (void)setupChildVcs { for (int i = 0; i<6; i++) { UIViewController *vc = [[UI ...
- IOS UITabBarController(控制器)的子控制器
UITabBarController的简单使用 ● UITabBarController的使用步骤 ➢ 初始化UITabBarController ➢ 设置UIWindow的rootViewContr ...
- AJ学IOS 之微博项目实战(1)微博主框架-子控制器的添加
AJ分享,必须精品 一:简单介绍 这是新浪微博的iOS端项目,来自于黑马的一个实战项目. 主要分成五大模块,本次全部运用纯代码实现,其中会用到很多前面学过得内容,如果有的地方有重复的知识点,说明这个知 ...
- iOS不得姐项目--精华模块上拉下拉的注意事项,日期显示,重构子控制器,计算cell的高度(只计算一次),图片帖子的显示
一.上拉下拉注意事项 使用MJRefresh中的上拉控件自动设置透明 当请求下页数据通过page的时候,注意的是上拉加载更多数据失败的问题,下拉加载数据失败了,页数应该还原.或者是请求成功的时候再将页 ...
- iOS开发-在表单元中添加子视图
#import <UIKit/UIKit.h> @interface NameAndColorCellTableViewCell : UITableViewCell @property(c ...
- Ext JS添加子组件的误区
经常会有人问我,为什么我的Grid不能岁窗口的变得而自动调整.了解后,发现很多人都习惯在渲染子组件的时候将Gird渲染到容器内的一个div里,而这正是问题的所在. 在Ext JS的布局系统中,能控制到 ...
- IOS 拦截所有push进来的子控制器
/** * 能拦截所有push进来的子控制器 */ - (void)pushViewController:(UIViewController *)viewController animated:(BO ...
- Ext.js添加子组件
Ext框架提供了很多api,对于不熟悉的人来说,api的释义有时不够明了.最近碰到了添加子组件的需求,特记录下来. 1. 例如,有一个窗体组件: 现在要为其添加一个字段“学校分类”,变成如下所示: 示 ...
随机推荐
- CSS3:不可思议的border属性&Web字体图标Font Awesome
CSS3:不可思议的border属性 转载至——译文:不可思议的CSS border属性 原文:Magic of CSS border property Web字体图标Font Awesome 转载 ...
- Python顺序集合之 tuple
慕课网<Python 入门>学习笔记 1.tuple特性 tuple是另一种有序的列表,中文翻译为“ 元组 ”.tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改 ...
- js打印图形
1. js绘画金字塔 思想:先画n-i个空格,再画2*i-1个*号,再画n-i个空格(此处可以省略),一行画完之后换行:循环下一行(先判断每行的空格数和*号与行数间的关系) var n=window ...
- mysql的小知识点(关于数据库的导入导出 对于windows)
对于,一个存在的数据,我们该如何去打包成.sql属性的文件呢? 直接进行这两条语句: D:\Program Files\MySQL\mysql\bin>mysqldump -u root -p ...
- 179. Largest Number -- 数字字符串比较大小
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- BZOJ1590 [Usaco2008 Dec]Secret Message 秘密信息
建立一颗trie树,记录下来每个点以它为结尾的字符串的个数cnt,和它的子树内有多少字符串size 于是查询的时候就只需要把沿途的cnt加起来,再加上最后的size就好了 /************* ...
- cookie与sessionID之间的关系实验
上一篇介绍了cookie,这里来看看cookie与sessionID之间有什么关系. 一.编写测试用例代码 新建一个servlet如下: public class SessionServlet ext ...
- Linux下配置用msmtp和mutt发邮件
Linux下可以直接用mail命令发送邮件,但是发件人是user@servername,如果机器没有外网的dns,其他人就无法回复.此时,有一个可以使用网络免费邮箱服务的邮件发送程序就比较重要了.ms ...
- mysql在一台服务器搭建主从
注:本环境事先执行rm -rf /usr/local/mysql 以方便实验. 1. 主与从,类似于A机器和B机器的连接,通过bin_log和rpel_log 进行数据连接 2. 如图所示: 3. ...
- spark 学习
三种编译方式 1. 编译文档:more—>buiding spark 2. 三种编译方式:SBT,Maven,打包编译 make-distribution.sh 运行方式 local,stand ...