《iOS 8开发指南(第2版)》——第6章,第6.2节Xcode中的MVC
本节书摘来自异步社区《iOS 8开发指南(第2版)》一书中的第6章,第6.2节Xcode中的MVC,作者 管蕾,更多章节内容可以访问云栖社区“异步社区”公众号查看
6.2 Xcode中的MVC
iOS 8开发指南(第2版)
在用Xcode编程并在Interface Builder中安排用户界面(UI)元素后,Cocoa Touch的结构旨在利用MVC(Model-View-Controller,模型—视图—控制器)设计模式。在本节的内容中,将讲解Xcode中MVC模式的基本知识。
6.2.1 原理
MVC模式会将Xcode项目分为如下3个不同的模块。
1.模型
模型是应用程序的数据,比如项目中的数据模型对象类。模型还包括采用的数据库架构,如Core Data或者直接使用SQLite文件。
2.视图
顾名思义,视图是用户看到的应用程序的可视界面。它包含在Interface Builder中构建的各种UI组件。
3.控制器
控制器是将模型和视图元素连接在一起的逻辑单元,处理用户输入和UI交互。UIKit组件的子类,比如UINavigationController和UITabBarController是最先会被想到的,但是这一概念还扩展到了应用程序委托和NSObject的自定义子类。
虽然在Xcode项目中,上述3个MVC元素之间会有大量交互,但是创建的代码和对象应该简单地定义为仅属于三者之一。当然,完全在代码内生成UI或者将所有数据模型方法存储在控制器类中非常简单,但是,如果你的源代码没有良好的结构,会使模型、视图和控制器之间的分界线变得非常模糊。
另外,这些模式的分离还有一个很大的好处是可重用性!在iPad出现之前,应用程序的结构可能不是很重要,特别是不打算在其他项目中重用任何代码的时候。过去我们只为一个规格的设备(iPhone 320×480的小屏幕)开发应用程序。但是现在需要将应用程序移植到iPad上,利用平板电脑的新特性和更大的屏幕尺寸。如果iPhone应用程序不遵循MVC设计模式,那么将Xcode项目移植到iPad上会立刻成为一项艰巨的任务,需要重新编写很多代码才能生成一个iPad增强版。
例如,假设根视图控制器类包含所有代码,这些代码不仅用于通过Core Data获取数据库记录,还会动态生成UINavigationController以及一个嵌套的UITableView用于显示这些记录。这些代码在iPhone上可能会良好运行,但是迁移到iPad上后可能想用UISplitViewController来显示这些数据库记录。但是,此时需要手动去除所有UINavigationController代码,这样才能添加新的UISplitViewController功能。但是,如果将数据类(模型)与界面元素(视图)和控制器对象(控制器)分开,那么将项目移植到iPad的过程会非常轻松。
6.2.2 模板就是给予MVC的
Xcode提供了若干模板,这样可以在应用程序中实现MVC架构。
1.view-based application(基于视图的应用程序)
如果应用程序仅使用一个视图,建议使用这个模板。一个简单的视图控制器会管理应用程序的主视图,而界面设置则使用一个Interface Builder模板来定义。特别是那些未使用任何导航功能的简单应用程序应该使用这个模板。如果应用程序需要在多个视图之间切换,建议考虑使用基于导航的模板。
2.navigation-based application(基于导航的应用程序)
基于导航的模板用在需要在多个视图之间进行切换的应用程序中。如果可以预见在应用程序中,会有某些画面上带有一个“回退”按钮,此时就应该使用这个模板。导航控制器会完成所有关于建立导航按钮以及在视图“栈”之间切换的内部工作。这个模板提供了一个基本的导航控制器以及一个用来显示信息的根视图(基础层)控制器。
3.utility application(工具应用程序)
适合于微件(Widget)类型的应用程序,这种应用程序有一个主视图,并且可以将其“翻”过来,例如,iPhone中的天气预报和股票程序等就是这类程序。这个模板还包括一个信息按钮,可以将视图翻转过来显示应用程序的反面,这部分常常用来对设置或者显示的信息进行修改。
4.OpenGL ES application(OpenGL ES应用程序)
在创建3D游戏或者图形时可以使用这个模板,它会创建一个配置好的视图,专门用来显示GL场景,并提供了一个例子计时器可以令其演示动画。
5.tab bar application(标签栏应用程序)
提供了一种特殊的控制器,会沿着屏幕底部显示一个按钮栏。这个模板适用于像iPod或者电话这样的应用程序,它们都会在底部显示一行标签,提供一系列的快捷方式,来使用应用程序的核心功能。
6.window-based application(基于窗口的应用程序)
提供了一个简单的、带有一个窗口的应用程序。这是一个应用程序所需的最小框架,可以用它作为开始来编写自己的程序。
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)
本节书摘来自异步社区《Android游戏开发详解》一书中的第1章,第1.6节函数(在Java中称为“方法”更好),作者 【美】Jonathan S. Harbour,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.6 函数(在Java中称为“方法”更好)Android游戏开发详解让我们将目前为止所学到的所有内容组合起来,并且讨论编程的一个重要方面,即函数。 函数是一组规则。特别地,函数应该接受一个值并且输出一个相应的结果。以一个数学函数为例。 f(x)=3x +2 输入是任意的数值x,输出是3x +2的结果 例如,f(1)=3(1)+2=5在Java中,我们可以定义一个非常类似的函数。如下的函数将接受一个float类型的输入,并且输出计算3x+2的结果。 程序清单1.6 Java函数 1float firstFunction (float x) { 2return 3*+ 2; 3} 现在,我们来进一步看看如何编写一个Java函数(也叫作方法,具体原因我们在下一章中介绍)。要编写一个Java函数,首先声明返回值的类型。还要给函数一个名称,例如,firstFunction。在函数...
-
下一篇
《iOS 6高级开发手册(第4版)》——2.5节秘诀:Quick Look预览控制器
本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第2章,第2.5节秘诀:Quick Look预览控制器,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.5 秘诀:Quick Look预览控制器iOS 6高级开发手册(第4版)Quick Look预览控制器类允许用户预览许多文档类型。这个控制器支持文本、图像、PDF、RTF、iWork文件、Microsoft Office文档(Office 97及更高版本,包括doc、ppt、xls等)和逗号分隔的值(comma-separated value,csv)文件。你提供一种受支持的文件类型,Quick Look控制器将为用户显示它。集成的系统提供的活动视图控制器有助于共享预览的文档,如图2-6所示。 Quick Look控制器以模态方式展示,并且显示用户点按了动作按钮之后的屏幕。Quick Look控制器可以处理广泛的文档类型,使用户能够先查看文件内容,然后再决定要应用于它们的动作。大多数Quick Look类型都支持Mail(邮件)和Print(打印),其中许多类型支持Copy(复...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL数据库中FOR UPDATE的使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker容器配置,解决镜像无法拉取问题
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7

微信收款码
支付宝收款码