经典MVC在iphone的运用

不羁的心 提交于 2019-11-29 13:35:25

    Cocoa Touch设计者们采用MVC范型作为指导原则,MVC是用于拆分GUI应用程序代码的逻辑方法,MVC模型将所有功能划分为3种:

    模型:保存应用程序数据的类;

    视图:窗口、控件和其他用户可以看到并能与之交互的元素;

    控制器:将模型和视图绑定到一起,确定如何处理用户输入的应用程序逻辑。

    MVC的目标是实现3类代码尽可能分离,编写的任何对象都可以很明显地归为其中一类,并且其功能大部分不属于或完全不属于其中另外两类,例如实现某个按钮地对象不应包含处理按下按钮事件时地数据,而实现银行帐户地代码不应包含绘制表格以显示交易情况地代码。

    在编写Cococa Touch应用程序时,我们主要使用Interface Builder来创建视图组件,但有时仍然需要在代码种修改界面,或者需要自己继承已有地控件和视图;

    创建模型地方法是设计一些Objective-C类来保存应用程序数据;

    控制器组件通常由开发人员创建地类和特定于应用程序的类组成,控制器可以完全是自定义的类(NSObject的子类),但更多的情况下,它们一般是UIKit框架种已有的通用控制器(如UIViewController)的子类。

    当我们创建一个Cocoa Touch的应用程序时,项目代码结构如下:

    如左图,我们创建了一个multiple_view名称的项目,在这个项目中初始化的文件有:View.xib、AppDelegate.h、AppDelegate.m、ViewController.h、ViewController.m、ViewController.xib这几个主要的文件,ViewController.xib是项目的主要的视图界面,也就是MVC中的V视图,通过在上面拖动控件即可生成视图,这些视图都是UIView的子类,当在加载这个ViewController.xib的时候,它被自动初始化,上面的控件也被初始化,假如我们在项目中有调用到这个xib上面的一些视图控件的话,那么我么必须在结束的时候释放掉它;ViewController.h、ViewController.m作为MVC的C控制器,控制客户端界面代码逻辑,既然我是一个控制器,假如有需要这个控制器控制的某些视图的话,这个控制器肯定需要拥有对这些视图的一个引用吧,因此一般情况我们是在这个ViewController.h中定义对应的视图成员变量,声明为IBoutlet,表示它是对这个xib中视图的一个引用,并且对应的要设置getter和setter方法,这样子我们在ViewController.h中才可以方便的来使用这个视图,如下所示:

@property (nonatomic, retain) IBOutlet UIButton *myButton;

对应地需要在ViewController.m中将这个属性的getter和setter方法给定义出来,如下所示:@synthesize myButton;

比如这里我们的myButton要响应一个点击事件,那么这个点击事件一般是在ViewController.h中将其声明出来,如下:-(IBAction)doSomeThing:(id)sender;

IBAction告诉Interface Builder这个方法是一个操作,且可以被某个控件触发,触发操作的控件将使用sender参数引用其自身,然后对应地在这个ViewController.m中实现这个方法,真正在这个方法中实现点击后的代码逻辑,最终将这个Interface Builder与ViewController给捆绑到一起。从而实现整个MVC模式的编程。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!