项目架构(结构)搭建:主流结构(UITabBarController + 导航控制器)
2017-02-24 23:45
399 查看
/* 项目架构(结构)搭建:主流结构(UITabBarController + 导航控制器) -> 项目开发方式 1.storyboard 2.纯代码 */ @interface AppDelegate () @end @implementation AppDelegate // 程序启动的时候就会调用 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1.创建窗口 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 2.设置窗口根控制器 UITabBarController *tabBarVc = [[UITabBarController alloc] init]; self.window.rootViewController = tabBarVc; // 2.1 添加子控制器(5个子控制器) -> 自定义控制器 -> 划分项目文件结构 // 精华 XMGEssenceViewController *essenceVc = [[XMGEssenceViewController alloc] init]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:essenceVc]; // initWithRootViewController:push // tabBarVc:会把第0个子控制器的view添加去 [tabBarVc addChildViewController:nav]; // 新帖 XMGNewViewController *newVc = [[XMGNewViewController alloc] init]; UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:newVc]; // tabBarVc:会把第0个子控制器的view添加去 [tabBarVc addChildViewController:nav1]; // 发布 XMGPublishViewController *publishVc = [[XMGPublishViewController alloc] init]; // tabBarVc:会把第0个子控制器的view添加去 [tabBarVc addChildViewController:publishVc]; // 关注 XMGFriendTrendViewController *ftVc = [[XMGFriendTrendViewController alloc] init]; UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:ftVc]; // initWithRootViewController:push // tabBarVc:会把第0个子控制器的view添加去 [tabBarVc addChildViewController:nav3]; // 我 XMGMeViewController *meVc = [[XMGMeViewController alloc] init]; UINavigationController *nav4 = [[UINavigationController alloc] initWithRootViewController:meVc]; // initWithRootViewController:push // tabBarVc:会把第0个子控制器的view添加去 [tabBarVc addChildViewController:nav4]; // 2.2 设置tabBar上按钮内容 -> 由对应的子控制器的tabBarItem属性 // 0:nav nav.tabBarItem.title = @"精华"; nav.tabBarItem.image = [UIImage imageNamed:@"tabBar_essence_icon"]; nav.tabBarItem.selectedImage = [UIImage imageNamed:@"tabBar_essence_click_icon"]; // 1:新帖 nav1.tabBarItem.title = @"新帖"; nav1.tabBarItem.image = [UIImage imageNamed:@"tabBar_new_icon"]; nav1.tabBarItem.selectedImage = [UIImage imageNamed:@"tabBar_new_click_icon"]; // 2:发布 publishVc.tabBarItem.image = [UIImage imageNamed:@"tabBar_publish_icon"]; publishVc.tabBarItem.selectedImage = [UIImage imageNamed:@"tabBar_publish_click_icon"]; // 3.关注 nav3.tabBarItem.title = @"关注"; nav3.tabBarItem.image = [UIImage imageNamed:@"tabBar_friendTrends_icon"]; nav3.tabBarItem.selectedImage = [UIImage imageNamed:@"tabBar_friendTrends_click_icon"]; // 4.我 nav4.tabBarItem.title = @"我"; nav4.tabBarItem.image = [UIImage imageNamed:@"tabBar_me_icon"]; nav4.tabBarItem.selectedImage = [UIImage imageNamed:@"tabBar_me_click_icon"]; /* 问题: 1.选中的图片被渲染 2.选中标题颜色:黑色 标题字体大 3.发布按钮显示不出来 */ // 3.显示窗口 1.成为UIApplication主窗口 2. [self.window makeKeyAndVisible]; return YES; }
自定义tabbarController,代码调整后
/* 项目架构(结构)搭建:主流结构(UITabBarController + 导航控制器) -> 项目开发方式 1.storyboard 2.纯代码 */ @interface AppDelegate () @end @implementation AppDelegate // 自定义类:1.可以管理自己业务 // 封装:谁的事情谁管理 =. 方便以后去维护代码 // 程序启动的时候就会调用 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1.创建窗口 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 2.设置窗口根控制器 XMGTabBarController *tabBarVc = [[XMGTabBarController alloc] init]; self.window.rootViewController = tabBarVc; /* 问题: 1.选中的图片被渲染 2.选中标题颜色:黑色 标题字体大 3.发布按钮显示不出来 */ // 3.显示窗口 1.成为UIApplication主窗口 2. [self.window makeKeyAndVisible]; return YES; }
#import "XMGTabBarController.h" #import "XMGEssenceViewController.h" #import "XMGFriendTrendViewController.h" #import "XMGMeViewController.h" #import "XMGNewViewController.h" #import "XMGPublishViewController.h" @interface XMGTabBarController () @end @implementation XMGTabBarController #pragma mark - 生命周期方法 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // 1 添加子控制器(5个子控制器) -> 自定义控制器 -> 划分项目文件结构 [self setupAllChildViewController]; // 2 设置tabBar上按钮内容 -> 由对应的子控制器的tabBarItem属性 [self setupAllTitleButton]; } #pragma mark - 添加所有子控制器 - (void)setupAllChildViewController { // 精华 XMGEssenceViewController *essenceVc = [[XMGEssenceViewController alloc] init]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:essenceVc]; // initWithRootViewController:push // tabBarVc:会把第0个子控制器的view添加去 [self addChildViewController:nav]; // 新帖 XMGNewViewController *newVc = [[XMGNewViewController alloc] init]; UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:newVc]; // tabBarVc:会把第0个子控制器的view添加去 [self addChildViewController:nav1]; // 发布 XMGPublishViewController *publishVc = [[XMGPublishViewController alloc] init]; // tabBarVc:会把第0个子控制器的view添加去 [self addChildViewController:publishVc]; // 关注 XMGFriendTrendViewController *ftVc = [[XMGFriendTrendViewController alloc] init]; UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:ftVc]; // initWithRootViewController:push // tabBarVc:会把第0个子控制器的view添加去 [self addChildViewController:nav3]; // 我 XMGMeViewController *meVc = [[XMGMeViewController alloc] init]; UINavigationController *nav4 = [[UINavigationController alloc] initWithRootViewController:meVc]; // initWithRootViewController:push // tabBarVc:会把第0个子控制器的view添加去 [self addChildViewController:nav4]; } // 设置tabBar上所有按钮内容 - (void)setupAllTitleButton { // 0:nav UINavigationController *nav = self.childViewControllers[0]; nav.tabBarItem.title = @"精华"; nav.tabBarItem.image = [UIImage imageNamed:@"tabBar_essence_icon"]; nav.tabBarItem.selectedImage = [UIImage imageNamed:@"tabBar_essence_click_icon"]; // 1:新帖 UINavigationController *nav1 = self.childViewControllers[1]; nav1.tabBarItem.title = @"新帖"; nav1.tabBarItem.image = [UIImage imageNamed:@"tabBar_new_icon"]; nav1.tabBarItem.selectedImage = [UIImage imageNamed:@"tabBar_new_click_icon"]; // 2:发布 XMGPublishViewController *publishVc = self.childViewControllers[2]; publishVc.tabBarItem.image = [UIImage imageNamed:@"tabBar_publish_icon"]; publishVc.tabBarItem.selectedImage = [UIImage imageNamed:@"tabBar_publish_click_icon"]; // 3.关注 UINavigationController *nav3 = self.childViewControllers[3]; nav3.tabBarItem.title = @"关注"; nav3.tabBarItem.image = [UIImage imageNamed:@"tabBar_friendTrends_icon"]; nav3.tabBarItem.selectedImage = [UIImage imageNamed:@"tabBar_friendTrends_click_icon"]; // 4.我 UINavigationController *nav4 = self.childViewControllers[4]; nav4.tabBarItem.title = @"我"; nav4.tabBarItem.image = [UIImage imageNamed:@"tabBar_me_icon"]; nav4.tabBarItem.selectedImage = [UIImage imageNamed:@"tabBar_me_click_icon"]; } - (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. } */ @end
相关文章推荐
- IOS博客项目搭建-02-自定义底部导航控制器UITabBarController
- 架构系列:ASP.NET 项目结构搭建
- Asp.Net MVC && SmartDAL项目实践(二) 简单结构搭建
- NHibernate+Oracle10g搭建一个项目架构全程解析(二)
- 基于MVC3.0的三层结构多项目分离框架的搭建
- Entiy Framework研究 - 项目架构搭建
- Windows phone8 基础篇(一) 环境搭建和项目结构说明
- ASP.NET2.0站点地图搭建网站导航结构
- maven(一)初步搭建,项目结构
- 苹果应用开发架构及项目结构
- 项目架构搭建的一些心得体会 推荐
- 技巧-导航控制器和UITabBar控制器结合使用
- NHibernate+Oracle10g搭建一个项目架构全程解析(三)
- MVP+WCF+三层结构搭建项目框架(上)
- struts2+hibernate3+spring3项目快速开发(图文)之3:搭建项目结构(分包、类实现、方法编写)
- Spring3+Hibernate4+SpringMVC整合Ext:项目架构搭建
- NHibernate+Oracle10g搭建一个项目架构全程解析(一)
- NHibernate+Oracle10G搭建项目架构示范代码下载(http://d.download.csdn.net/down/1813293/jiangtongcn)
- MVP+WCF+三层结构搭建项目框架
- Windows phone8 基础篇(一) 环境搭建和项目结构说明 推荐