ios 里的 三级控制器 是 一个 tabbar控制器 控制 多个 navigation 控制器, 然后每个 navigation 控制器 对应着 一个 view
本项目 初始化分为两部分 : 视图初始化 , tabbar 初始化
//视图初始化
-(void)initView
{
//set view
First *first=[[First alloc]init];
Second *second=[[Second alloc]init];
Third *third=[[Third alloc] init];
Fourth *fourth=[[Fourth alloc]init];
Fifth *fifth=[[Fifth alloc] init];
NSArray *array=@[first,second,third,fourth,fifth];
NSMutableArray *muarray=[NSMutableArray arrayWithCapacity:array.count];
for(int i=0;i<array.count;i++)
{
// 将 每个视图 放入 对应 的 navigation 控制器里
UINavigationController *navigation=[[UINavigationController alloc] initWithRootViewController:array[i]];
[muarray addObject:navigation];
}
self.viewControllers=muarray;
}
// tabbar 初始化
-(void)initTabbar
{
tabbar=[[UIView alloc] initWithFrame:CGRectMake(0, kscreenHeight-tabBarHeight, kscreenWidth, tabBarHeight)];
//通过 image 的颜色 来 设置 背景颜色
tabbar.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"mask_navbar"]];
[self.view addSubview:tabbar];
NSArray *imgArray = @[@"home_tab_icon_1",@"home_tab_icon_2",@"home_tab_icon_3",@"home_tab_icon_4",@"home_tab_icon_5"];
//给 tabbar 添加 按钮
for(int i=0;i<imgArray.count;i++)
{
UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
[btn setBackgroundImage:[UIImage imageNamed:imgArray[i]] forState:UIControlStateNormal];
btn.frame=CGRectMake(btnWidth*i, (tabBarHeight-btnHeight)/2, btnWidth, btnHeight);
btn.tag=100+i;
[btn addTarget:self action:@selector(tabbtnclick:) forControlEvents:UIControlEventTouchUpInside];
[tabbar addSubview:btn];
}
_selectimg=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, btnWidth, btnHeight)];
_selectimg.image=[UIImage imageNamed:@"home_bottom_tab_arrow"];
[tabbar addSubview:_selectimg];
//set tabbar
}
//然后再设置按钮点击事件
-(void)tabbtnclick:(UIButton *)btn
{
//NSLog(@"%d",btn.tag);
// self . selectedindex 是 跳转 view
self.selectedIndex=btn.tag-100;
[UIView animateWithDuration:0.2 animations:^{
_selectimg.center=btn.center;
}];
}
// 视图 即将出现时调用的方法
-(void) viewWillAppear:(BOOL)animated
{
ViewController *ct=(ViewController *) self.tabBarController;
[ct show:YES];
}