iPhone开发应用处理基本交互

本文介绍的是在iPhone开发应用中处理基本交互的内容,主要介绍了如何处理实现基本的交互,来阿卡呢本
首页 新闻资讯 行业资讯 iPhone开发应用处理基本交互

iPhone开发应用处理基本交互是本文要介绍的内容,MVC:(Model View controller 模型,视图,控制器)目标:实现三类尽可能截然不同的代码,编写的任何对象都应该很明显的划分为哪一类,并且其功能大部分不属于或者完全不属于另外两个类。

MVC可以帮助确保实现最大的可重用性。

模型:保存应用程序的数据的类。设计一些OBjective-C类来保存应用程序的数据。

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

控制器:将模型和视图绑定在一起,确定如何处理用户输入的应用程序逻辑。由开发人员创建的类和特定于应用程序的类组成。

Classes文件夹中的四个文件:(两对.m和.h文件)

IP_03buttonfunViewController将负责管理该视图。

复制

#import <UIKit/UIKit.h>  @interface IP_03buttonfunViewController : UIViewController {  }  @end
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

这是UIViewController的子类。(UIViewController局势一个通用的控制器,他是UIKit的一部分)

IP_03buttonfunAppDelegate实现了应用程序委托。委托,负责为另外一个对象处理特定事情的类。通过应用程序委托,我们可以在预先定义的时间为UIApplication处理事情。

输出口(OutLet):

输出口Outlet,是一个特殊的实例变量,控制器类可以使用他来引用nib中的对象。可以把输出口看成是指向nib中的对象的指针。例如:假设在IB中创建一个文本标签,需要在代码中对该文本标签进行修改操作,这时就需要声明一个输入口,并将其指向该标签,这样就可以通过改输入口来修改该标签了。

输出口是使用关键字IBOutlet声明的实例变量。

IBOutlet关键字的定义如下:

复制

#ifndef IBOutlet  #define IBoutlet  #endif
  • 1.

  • 2.

  • 3.

对编译器而言,IBoutlet并未执行任何操作,他仅仅是告诉IB,此实例变量将被连接到nib中的对象。

操作(Action):

操作是控制器类中的方法,通过IBAction来声明。该关键字告诉IB,此方法是一个操作,并且可以被某个控件触发。

操作的声明如下:

复制

-(IBAction)doSomething:(id)sender;
  • 1.

没有任何返回值。操作方法接受一个参数,该参数为id类型。名称被制定为sender,触发操作的控件将使用sender参数引用其自身。

@property声明:

在以前的操作中遇到这个问题一直没有答案,今天在看这一章的时候,上面有详细的讲解,好好学学。

@property所声明的是一些属性。这也是Objective-C2.0的一个新特性。就想.NET中的set和get一样。在Objective-C中添加属性,通常会有设置属性和检索属性,这中方法被成为访问方法和修改方法。例如下面的形式:

复制

-(id)foo //访问方法  {      return foo;  }   -(id)setFoo:(id)aFoo  {      if(aFoo!=foo)      {         [aFoo retain];         [foo release];         foo = aFoo;      }  }
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

使用@property就告别了这种枯燥乏味的访问方法和修改方法。我们可以使用@property和@synthesize相结合,可以通知编译器在编译的时候创建获取方法和设置方法。一下面的例子为例:

复制

@property (retain,nonatomic) UILabel *statusText;
  • 1.

其中的参数retain,通知编译器向分配给此属性的对象发送一个保留信息,这样不会从内存中清楚。这是必不可少的。因为默认行为assign需要与垃圾收集一起使用。垃圾收集在IPhone当前尚未使用。

第二个可选属性nonatomic将更改访问方法和修改方法的生成方式。

Objective-C属性还具有另外一个特性,呢就是点表示法。

复制

myVar = [someObject foo];或者myVar = someObject.foo;都是可以的  someObject.foo = myVar;等同于[someObject setFoo:myvar]
  • 1.

  • 2.

得到Button的Title:

复制

NSString *title = [sender titleForState:UIControlStateNormal];
  • 1.

在请求按钮的标题时我们要提供控件的状态,4种可能的状态为:

a:正常(normal)表示控件处于活动状态,但当前并未使用

b:突出显示(highlighted)表示控件正被按住或被使用

c:禁用(disabled)表示按钮未启用且无法使用

d:以选中(selected)仅特定控件具有该状态,表示控件当前已被选中

复制

NSString *newText = [NSString stringWithFormat:@"%@ button pressed.",title];
  • 1.

等同于

复制

NSString *newText = [[NSString allac] initWithFormat:@"%@ button pressed.", title];
  • 1.

实现的功能相同但是第一种方法不建议用。第一种方法被成为简便方法或工厂方法,它将返回自动释放的对象。在对象使用完成之后还会保留一段时间,浪费了内存,不建议使用。

[statusText release];既然我们没有实例化该对象,为什么还有release呢?

因为我们实现了各输出口的属性,并且为该属性指定了retain参数,因此我们必须要释放他。

创建例子:

打开Xcode。File->New Project->Iphone Application->View-Based Application->IP_03buttonfun

修改IP_03buttonfunViewController.h成:

复制

#import <UIKit/UIKit.h>  @interface IP_03buttonfunViewController : UIViewController {   IBOutlet UILabel *statusText;  }  @property (retain,nonatomic) UILabel *statusText;  -(IBAction)buttonPressed:(id)sender;  @end
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

修改IP_03buttonfunViewController.m成:

复制

#import "IP_03buttonfunViewController.h"   @implementation IP_03buttonfunViewController  @synthesize statusText;   -(IBAction)buttonPressed:(id)sender  {   NSString *title=[sender titleForState:UIControlStateNormal];   NSString *newText=[[NSString alloc]initWithFormat:@"%@ button pressed!",title];   [statusText setText:newText];   [newText release];  }   - (void)didReceiveMemoryWarning {      [super didReceiveMemoryWarning];  }   - (void)dealloc {   [statusText release];      [super dealloc];  }  @end
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

  • 22.

代码创建完毕,现在可以关联IB了。

拖两个Button一个Label到View中。修改Button为Lift和Right,修改Label为空并且调整适当的大小。

创建控件完毕。

选中Button Lift,然后Apple+2,看到Touch Up inside后面的一个小圈圈,用鼠拖到File's Ouner上面。同理Button Right一样的操作。

选中Label,Apple+2会看到statusText,和上面一样拖到File's Ouner上。

程序完成,Build and go运行结果如下。

iPhone开发应用处理基本交互

小结:iPhone开发应用处理基本交互的内容介绍完了,希望本文对你有所帮助!

21    2011-08-04 15:24:53    iPhone开发 交互 MVC