#### 加强版Hello World
实现步骤
1.创建HelloHaoMengZhu工程
在Xcode中创建HelloHaoMengZhu工程, 基于iPhone视图基础应用程序。
iPhone OS ->Application ->Single View Application
2.修改HelloHaoMengZhuViewController.h
我们需要UITextField控件接受文字和响应一个按钮点击事件,
所以在h文件中我们要定义一个UITextField属性和一个响应事件方法。
3.修改HelloHaoMengZhuViewController.m
#### 实现txtField属性
实现-(IBAction)onClickButton:(id)sender方法
4.使用IB设计页面, 摆放控件
打开Main.storyboard文件;
打开Library将控件拖入设计窗口 。
5.连接输出口
为了将控件属性通过屏幕“输入” 或“输出” ,我们需要定义“输出口” ,
在控制器中我们已经定义了与这个数据对应的属性:
@property ( nonatomic, retain) IBOutlet
UITextField *txtField;
UITextField用于展示输出和输入数据。
在iPhone(包括Mac)开发时候控件属性要通过定义输出口才能在屏幕中使用的。
在IB中,点击鼠标右键,拖动New Referencing Outlet连线到File’s Owner。
设计区TextField控件并选择属性txtField。
其中File’s Owner代表控制器类。
![](https://box.kancloud.cn/2016-01-06_568cf5c974476.jpg)
6.处理事件
为了响应控件的事件, 我们需要在控制器中定义一个事件处理方法:
-(IBAction)onClickButton:(id)sender;
在iPhone(包括Mac)开发控件事件处理要自己编写对应方法,
并在IB中将控件的事件与该方法连接起来。
在IB中, 用鼠标右键拖到Button控件到File’s Owner,选择发送事件。
其中File’s Owner代表控制器类。
![](https://box.kancloud.cn/2016-01-06_568cf5c995d63.jpg)
7、编译运行
点击按钮在输入框里出现“Hello HaoMengZhu.”
![](https://box.kancloud.cn/2016-01-06_568cf5c9b8bea.jpg)
#### MVC设计模式
MVC是一种设计模式,上面的例子就使用了MVC的设计模式。
所谓设计模式就是解决某一特定问题的方案。
MVC是解决具有UI的应用系统的成熟解决方案,
在Cocoa应用系统中严格按照该模式实现。
M-Model(模型) 是应用系统中与视图对于部分的数据。
V -View(视图) 是应用系统中用户看到并与之交互的界面。
C-Controller(控制器) 是应用系统中起到控制器作用,接受用户事件,显示数据等等,与视图进行交互等。
#### Cocoa MVC
采用 MVC 设计模式意味着, Interface Builder 不需要编写或生成任何代码,
您只需专注于应用程序的视图。
Mac 的 Cocoa 绑定消除了大部分的黏合代码,
它就像连接在 Xcode 编写的控制器和Interface Builder 设计的视图之间的一条线,
用图形化的表示方法简化了二者之间的关系。
Interface Builder 和 Cocoa 可以快速开发地您的应用程序。
![](https://box.kancloud.cn/2016-01-06_568cf5c9e6368.jpg)
![](https://box.kancloud.cn/2016-01-06_568cf5ca08039.jpg)![](https://box.kancloud.cn/2016-01-06_568cf5ca2030f.jpg)
#### 视图控制器的方法
主要包括:
~~~
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:
(NSBundle *)nibBundleOrNil
- (void)loadView
- (void)viewDidLoad
- (void)didReceiveMemoryWarning
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
- (void)viewDidUnload
- (void)dealloc
~~~
下面我们一一详解:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
如果视图使用NIB文件创建, 在加载视图之前调用这个方法, 做一些初始化处理。
- (void)loadView
视图加载时候调用的方法一般不使用NIB文件创建视图时候使用, 而是通过代码创建视图对象。
- (void)viewDidLoad视图加载之后调用方法, 我们常常在这个方法中做视图初始化出来。
- (void)didReceiveMemoryWarning
当系统内存告警的时候, 调用的方法, 我们一般在该方法释放一些耗费资源的对象。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
用于处理屏幕旋转的方法。
- (void)viewDidUnload
视图对象卸载的时候调用的方法,一般在把内存视图中属性设置为nil的。
示例:
~~~
- ( void) viewDidUnload {
self. txtField = nil;
}
- (void)dealloc
~~~
视图对象内存释放时候调用方法, 在该方法中先要释放成员变量。
示例:
~~~
- ( void) dealloc {
[txtField release];
[super dealloc];
}
~~~
#### 输出口和动作
输出口( Outlet) , 为了实现控制器在视图上输入输出结果, 需要定义输出口 。
动作( Action) , 为了实现视图控制器响应视图事件, 需要定义动作。
输出口(Outlet)
定义输出口 , 是在ViewController定义一个控件属性,
如下:
h文件:
~~~
@interface Hello_WorldViewController :
UIViewController {
UITextField *txtField;
}
@property (nonatomic, retain) IBOutlet
UITextField *txtField;
m文件:
@synthesize txtField;
~~~
动作(Action)
定义动作, 是在ViewController定义一个方法,
如下:
h文件:
~~~
-(IBAction)onClickButton:(id)sender;
m文件:
-(IBAction)onClickButton:(id)sender {
txtField.text = @"Hello World.";
}
~~~
动作( Action) 是在控件器中的方法, 但它的返回类型必须是IBAction声明的, 该关键字告诉IB,
此方法是个Action, 可以被某个事件触发。