步骤:搭建基本环境 -> 展示子控制器 -> 项目分层 -> 增加导航功能 -> 增加导航栏按钮。

搭建基本环境

该项目使用代码搭建UI界面,所以在HMAppDelegate的didFinishLaunchingWithOptions方法中要创建窗口window并设置窗口的根控制器,如下:

删除storyboard后要记得:

隐藏项目启动图的状态栏:

APP的界面:

展示子控制器

新建一个HMTabBarViewController类,在viewDidLoad方法中添加子控制器:

将添加子控制器的代码抽取为方法addOneChirdVc:

注:在iOS7中,会对selectedImage的图片进行再次渲染为蓝色,所以要显示原图,就必须得告诉他:不要渲染。

有时候,Image在不同版本的iOS中会提供不同的图片,他们的名称会有所不同,这时可对UIImage进行扩展:

APP的界面:

项目分层

HM微博项目按照的是功能模块对项目分层,并在每个模块里单独使用MVC模式,分层图如下:

增加导航功能(添加导航控制器)

tabBar控制器的子控制器必须包装在导航控制器中,才能实现push等操作,如下:

在4个子控制器(继承于UITableViewController)中分别实现数据源方法:

HMHomeViewController.h,

HMMessageViewController.h,

HMDiscoverViewController.h,

HMProfileViewController.h,

如下:

在HMTabBarViewController类中,修改addOneChirdVc方法,设置导航栏和tabBar栏上的title,如下:

APP的界面:

增加导航栏按钮

在HMHomeViewController.h中,重写viewDidLoad方法,设置导航栏按钮,如下:

设置导航栏按钮在整个项目多处会用到,所以对其进行封装,

扩展UIBarButtonItem类,如下:

除了最先push进来的几个控制器外,要在所有push进来的子控制器设置导航栏按钮,可以在HMNavigationController类的pushViewController方法进行设置,如下:

除了扩展UIBarButtonItem类设置导航栏按钮,还有另外一种做法,自定义按钮,如下:

这里的leftBtn.size的size用到了UIView类的扩展。

在HMMessageViewController.h中,重写viewDidLoad方法,设置导航栏按钮,如下:

在HMNavigationController类中,重写类方法initialize,通过appearance对象修改整个项目中所有“UIBarButtonItem”的样式,如下:

注:这里的UITextAttriTextColor、UITextAttriTextFont属性在iOS7.0之后已经不建议使用。

APP的界面:

学习HM微博项目第1天相关推荐

  1. 学习HM微博项目第10天

    步骤:发微博12-表情键盘06-点击表情 -> 发微博13-表情键盘07-插入表情和封装textView -> 发微博14-表情键盘08-长按表情 -> 发微博15-表情键盘09-最 ...

  2. 学习HM微博项目第2天

    步骤:导航栏主题 -> 添加搜索框 -> 易混淆的属性 -> 自定义搜索框 -> 标题按钮 -> 弹出下拉菜单 -> 封装下拉菜单 导航栏主题 在HMNavigat ...

  3. 学习HM微博项目第9天

    步骤:发微博07-表情键盘01-切换键盘 -> 发微博08-表情键盘02-表情工具条 -> 发微博09-表情键盘03-加载表情数据和切换表情按钮 -> 发微博10-表情键盘04-表情 ...

  4. 学习HM微博项目第8天

    步骤:发微博01-导航栏内容 -> 发微博02-自定义TextView -> 发微博03-完善TextView和发送微博按钮 -> 发微博04-显示工具条 -> 发微博05-封 ...

  5. 学习HM微博项目第7天

    步骤:首页14-时间 -> 首页15-来源 -> 首页16-配图相册 -> 首页17-头像 首页14-时间 通过新浪官方的APP可知,在微博发送时间上是这么分类的: /**1.今年1 ...

  6. 学习Coding-iOS开源项目日志(二)

    继续前篇:<学习Coding-iOS开源项目日志(一)>,接着本第二篇<学习Coding-iOS开源项目日志(二)>讲解Coding-iOS开源项目. 前言:作为初级程序员,想 ...

  7. 后盾vip php框架,后盾网实战VIP教程之ThinkPHP微博项目系列培训

    php教程 当前位置:主页 > php教程 > 后盾网实战VIP教程之ThinkPHP微博项目系列培训 后盾网实战VIP教程之ThinkPHP微博项目系列培训 教程大小:1.56GB   ...

  8. 如何用 Python 进行基于深度学习的计算机视觉项目开发?

    令人惊喜的"智能"年代 深度学习有着广阔的前景 我们正处在一个"智能"的年代,比如智能手机中的语音助手.机器翻译和人脸识别:战胜过日本将棋冠军.国际象棋冠军, ...

  9. No module named MNIST_写给小白的用fashion-mnist入门机器学习和深度学习的简单项目(非常全面!!!)...

    这是一个入门机器学习和深度学习的小项目,以fashion-mnist数据为基础.分别利用机器学习(随机森林)和深度学习(多层感知机/卷积神经网络)方法进行训练.完整的包含数据读取,数据处理,训练, 验 ...

最新文章

  1. 沈阳初步建成国内领先的城市级大数据资源库
  2. 阿里程序员转行公务员,工资少了40万,只留一句话惊醒众人
  3. JavaScript 基础 数据类型与运算符
  4. Spring Cloud微服务之子模块的创建(二)
  5. 手机游戏资源 特效 显存分析工具
  6. 我的世界服务器启动端怎么制作教程,我的世界怎样制作和运行服务器 详细制作教程一览...
  7. 常州工学院计算机网络考试题库,用Winsock实现在线考试
  8. php buildconf,PHP Extension开发 Unix Build System配置 conf
  9. 为什么网易云音乐总能知道你喜欢听什么歌?背后的原理竟然如此简单!
  10. Assembler如何把跳转汇编变成机器码的(一)
  11. Java poi 生成PPT并插入Excel附件并以图片形式显示代-代码例子
  12. 利用Python脚本来使用Google自动翻译Excel表格文件
  13. 为啥将phpstudy打开,却访问不了rips
  14. Error instantiating servlet class 的解决办法
  15. ACP——ECS题库
  16. 团队协作与团队内部竞争_从个人团队到竞争组织
  17. C语言编程>第十八周 ⑧ 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
  18. Java工程师学习指南(入门篇)
  19. 超级计算机开采金矿,地球内部有4亿亿吨黄金,人均550万吨,为何无人敢开采?...
  20. 微信玩转开发板-微信控制智能家居简易模型

热门文章

  1. javascript模块化的前世今生
  2. .Net报表工具ActiveReports在线设计器教程 - 如何调用自定义字体
  3. React性能优化SCU | PureComponent | memo
  4. 怎么把Excel转换成PDF格式?这三种方法轻松完成转换
  5. 社会实践活动报告—06暑假饭店打工
  6. ABP+AdminLTE+Bootstrap Table权限管理系统第五节--WBEAPI及SwaggerUI
  7. Android-生成二维码工具类
  8. Vue【定制化】~ 基础知识
  9. OA附件不能直接打开PDF文件
  10. Nachos5.0 java版本前三个proj设计报告