iOS开发项目篇—02添加子控制器以及项目分层
iOS开发项目篇—02添加子控制器以及项目分层
一、添加子控制器
1.设置根控制器(自定义)
YYAppDelegate.m文件代码:
1 #import "YYAppDelegate.h"2 #import "YYTabBarViewController.h"3 4 @implementation YYAppDelegate5 6 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions7 {8 9 //1.创建窗口 10 self.window=[[UIWindow alloc]init]; 11 self.window.frame=[UIScreen mainScreen].bounds; 12 13 //2.设置窗口的根控制器 14 // UITabBarController *tabbarVc =[[UITabBarController alloc]init]; 15 // self.window.rootViewController=tabbarVc; 16 self.window.rootViewController=[[YYTabBarViewController alloc]init]; 17 18 //3.显示窗口 19 [self.window makeKeyAndVisible]; 20 return YES; 21 } 22
2.新建四个自定义的控制器
说明:根据功能模块划分,把该项目划分为四个大的部分,分别是首页、消息、发现和“我”,根据项目需要,自定义四个子控制器,对这四个模块分别进行管理。
自定义四个控制器,让其继承自UITableViewController
在中控制器 (YYTabBarViewController)中,添加四个子控制器
3.拷贝需要的图片素材到项目中
建议:在拷贝图片的时候,建议使用硬盘对硬盘的拷贝,即在finder中进行。
4.修改系统插件
在项目中,经常会使用到分类(如本项目中使用了一个自己定义UIImage的匪类),但是使用这种分类的方法时,我们安装的只能提示插件可能并不会有智能提示,那么这种情况下可以尝试修改插件。
(1)找到插件在XCode中的安装路径
提示:Xcode的插件安装路径: /Users/用户名/Library/Application Support/Developer/Shared/Xcode/Plug-ins
(2)显示包内容
(3)修改plist文件
二、实现代码
YYTabBarViewController.m文件
1 //2 // YYTabBarViewController.m3 // 02-微博添加子控制器和设置项目结构4 //5 // Created by apple on 14-7-3.6 // Copyright (c) 2014年 itcase. All rights reserved.7 //8 9 #import "YYTabBarViewController.h" 10 #import "YYHomeTableViewController.h" 11 #import "YYDiscoverViewController.h" 12 #import "YYMessageViewController.h" 13 #import "YYProfileViewController.h" 14 #import "UIImage+Extension.h" 15 16 @interface YYTabBarViewController () 17 18 @end 19 20 @implementation YYTabBarViewController 21 22 23 - (void)viewDidLoad 24 { 25 [super viewDidLoad]; 26 //添加四个子控制器 27 YYHomeTableViewController *home=[[YYHomeTableViewController alloc]init]; 28 [self addOneChildVc:home title:@"首页" imageName:@"tabbar_home" selectedImageName:@"tabbar_home_selected"]; 29 30 31 YYMessageViewController *message=[[YYMessageViewController alloc]init]; 32 [self addOneChildVc:message title:@"消息" imageName:@"tabbar_message_center" selectedImageName:@"tabbar_message_center_selected"]; 33 34 YYDiscoverViewController *discover=[[YYDiscoverViewController alloc]init]; 35 [self addOneChildVc:discover title:@"发现" imageName:@"tabbar_discover" selectedImageName:@"tabbar_discover_selected"]; 36 37 YYProfileViewController *profile=[[YYProfileViewController alloc]init]; 38 [self addOneChildVc:profile title:@"我" imageName:@"tabbar_profile" selectedImageName:@"tabbar_profile_selected"]; 39 } 40 41 /** 42 * 添加一个子控制器 43 * 44 * @param childVC 子控制对象 45 * @param title 标题 46 * @param imageName 图标 47 * @param selectedImageName 选中时的图标 48 */ 49 -(void)addOneChildVc:(UIViewController *)childVc title:(NSString *)title imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName 50 { 51 //随机设置子控制器的背景颜色 52 childVc.view.backgroundColor=YYRandomColor; 53 //设置标题 54 childVc.tabBarItem.title=title; 55 //设置图标 56 childVc.tabBarItem.image=[UIImage imageWithName:imageName]; 57 //设置选中时的图标 58 UIImage *selectedImage=[UIImage imageWithName:selectedImageName]; 59 60 61 if (iOS7) { 62 // 声明这张图片用原图(别渲染) 63 selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 64 } 65 childVc.tabBarItem.selectedImage = selectedImage; 66 67 68 //添加子控制器到tabbar 69 [self addChildViewController:childVc]; 70 } 71 72 73 // 在iOS7中, 会对selectedImage的图片进行再次渲染为蓝色 74 // 要想显示原图, 就必须得告诉它: 不要渲染 75 76 // Xcode的插件安装路径: /Users/用户名/Library/Application Support/Developer/Shared/Xcode/Plug-ins 77 @end
UIImage分类
UIImage+Extension.h文件
1 //2 // UIImage+Extension.h3 // 4 //5 // Created by apple on 14-7-3.6 // Copyright (c) 2014年 heima. All rights reserved.7 //8 9 #import <UIKit/UIKit.h> 10 11 @interface UIImage (Extension) 12 + (UIImage *)imageWithName:(NSString *)name; 13 @end
UIImage+Extension.m文件
1 //2 // UIImage+Extension.m3 // 4 //5 // Created by apple on 14-7-3.6 // Copyright (c) 2014年 heima. All rights reserved.7 //8 9 #import "UIImage+Extension.h" 10 11 @implementation UIImage (Extension) 12 + (UIImage *)imageWithName:(NSString *)name 13 { 14 UIImage *image = nil; 15 if (iOS7) { // 处理iOS7的情况 16 NSString *newName = [name stringByAppendingString:@"_os7"]; 17 image = [UIImage imageNamed:newName]; 18 } 19 20 if (image == nil) { 21 image = [UIImage imageNamed:name]; 22 } 23 return image; 24 } 25 @end
在配置文件中的宏定义
1 //2 // Prefix header3 //4 // The contents of this file are implicitly included at the beginning of every source file.5 //6 7 #import <Availability.h>8 9 #ifndef __IPHONE_5_0 10 #warning "This project uses features only available in iOS SDK 5.0 and later." 11 #endif 12 13 #ifdef __OBJC__ 14 #import <UIKit/UIKit.h> 15 #import <Foundation/Foundation.h> 16 17 // 随机色 18 #define YYRandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0] 19 20 // 是否为iOS7 21 #define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0) 22 #endif
运行情况:
三、规划项目文件结构
该项目的开发以模块进行划分,文件结构如下:
提示:在进行结构划分的时候,可以在项目中新建分组,分组完成后,把相应的文件拖到对应的组中,但分组是虚拟文件夹,通过查看代码的文件可以发现,在硬盘上实质上是没有分文件夹的。
建议:直接在硬盘中进行分组,以解决这个问题。
转载于:https://www.cnblogs.com/panyangjun/p/4318757.html
iOS开发项目篇—02添加子控制器以及项目分层相关推荐
- iOS开发UI篇—多控制器和导航控制器简单介绍
iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...
- IOS开发UI篇—导航控制器属性和基本使用
IOS开发UI篇-导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController ...
- iOS开发拓展篇——如何把项目托管到GitHub
iOS开发拓展篇--如何把项目托管到GitHub 说明:本文主要介绍如何把一个OC项目托管到Github,重操作轻理论. 第一步:先注册一个Github的账号,这是必须的 注册地址:Github官网注 ...
- 02.iOS开发网络篇—HTTP协议
iOS开发网络篇-HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...
- iOS开发UI篇—Modal简单介绍
iOS开发UI篇-Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...
- iOS开发UI篇—UIWindow简单介绍
iOS开发UI篇-UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...
- iOS开发UI篇—UITabBarController简单介绍
iOS开发UI篇-UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...
- iOS开发多线程篇—自定义NSOperation
iOS开发多线程篇-自定义NSOperation 一.实现一个简单的tableView显示效果 实现效果展示: 代码示例(使用以前在主控制器中进行业务处理的方式) 1.新建一个项目,让控制器继承自UI ...
- iOS开发UI篇—UITableview控件使用小结
iOS开发UI篇-UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger ...
- iOS开发UI篇-在UItableview中实现加载更多功能
iOS开发UI篇-在UItableview中实现加载更多功能 一.实现效果 点击加载更多按钮,出现一个加载图示,三秒钟后添加两条新的数据. 二.实现代码和说明 当在页面(视图部分)点击加载更多按钮的时 ...
最新文章
- controller实现pdf的下载功能
- KeyMob移动广告聚合平台:类似于房地产中介
- Java锁消除和锁粗化
- boost::callable_traits的remove_member_cv_t的测试程序
- [python爬虫] Selenium高级篇之窗口移动、弹出对话框自登录
- 蓝桥杯 ALGO-21 算法训练 装箱问题
- OOB与COM交互读写本地文件
- 《玩转D语言系列》二、D语言现状、基本规定和相关资源介绍
- mysql 注释写法有哪些_mysql的注释有几种写法?
- Web报表工具FineReport二次开发JS之字符串
- 微信小程序实质是什么? Hybrid App
- 合肥赛区结束,继续训练提升
- 购买嵌入式硬件,焊接设备避坑指南/自用工具推荐
- python自主学习——Unicode
- Echarts经典颜色搭配
- mariadb数据库基本使用
- 手把手教你撸个直播小程序
- 不良事件总结怎么写_一份年度护理不良事件报告是怎样写成的
- 以金融证券、游戏、电商等案例详解SQL强化
- 北师大计算机专业课代号,2020北京师范大学计算机改考,不是408