iPhone开发应用处理基本交互

移动开发 iOS
本文介绍的是在iPhone开发应用中处理基本交互的内容,主要介绍了如何处理实现基本的交互,来阿卡呢本文详细内容。

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

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

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

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

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

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

IP_03buttonfunViewController将负责管理该视图。

  1. #import <UIKit/UIKit.h> 
  2.  
  3. @interface IP_03buttonfunViewController : UIViewController {  
  4. }  
  5. @end 

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

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

输出口(OutLet):

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

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

IBOutlet关键字的定义如下:

  1. #ifndef IBOutlet  
  2. #define IBoutlet  
  3. #endif 

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

操作(Action):

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

操作的声明如下:

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

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

@property声明:

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

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

  1. -(id)foo //访问方法  
  2. {  
  3.     return foo;  
  4. }  
  5.  
  6. -(id)setFoo:(id)aFoo  
  7. {  
  8.     if(aFoo!=foo)  
  9.     {  
  10.        [aFoo retain];  
  11.        [foo release];  
  12.        foo = aFoo;  
  13.     }  

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

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

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

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

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

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

得到Button的Title:

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

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

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

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

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

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

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

等同于

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

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

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

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

创建例子:

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

修改IP_03buttonfunViewController.h成:

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

修改IP_03buttonfunViewController.m成:

  1. #import "IP_03buttonfunViewController.h"  
  2.  
  3. @implementation IP_03buttonfunViewController  
  4. @synthesize statusText;  
  5.  
  6. -(IBAction)buttonPressed:(id)sender  
  7. {  
  8.  NSString *title=[sender titleForState:UIControlStateNormal];  
  9.  NSString *newText=[[NSString alloc]initWithFormat:@"%@ button pressed!",title];  
  10.  [statusText setText:newText];  
  11.  [newText release];  
  12. }  
  13.  
  14. - (void)didReceiveMemoryWarning {  
  15.     [super didReceiveMemoryWarning];  
  16. }  
  17.  
  18. - (void)dealloc {  
  19.  [statusText release];  
  20.     [super dealloc];  
  21. }  
  22. @end 

代码创建完毕,现在可以关联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开发应用处理基本交互的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 网络转载
相关推荐

2011-07-26 09:41:23

iPhone xcode Mac OS X

2013-06-20 10:17:34

Android应用

2021-01-06 08:13:08

公有云Docker容器

2011-08-08 10:10:14

iPhone开发 图片 方法

2011-08-09 17:29:29

iPhone文件屏幕

2011-08-10 10:10:21

iPhoneUIPopoverCo

2011-08-08 16:56:44

iPhone 字符处理 视图

2014-07-30 09:56:41

iPhoneiPad

2011-07-19 09:58:36

2011-07-19 09:46:38

2011-07-08 14:58:16

iPhone Xcode iOS

2011-08-10 17:37:00

iPhoneASIHTTPRequ

2011-08-18 10:39:46

iPhone开发界面

2011-08-05 14:48:06

iPhone应用 异步队列

2011-08-11 10:03:43

iPhonecocoaNSRunLoop

2011-08-09 13:10:32

iPhone地图开发

2011-08-08 14:57:46

iPhone Autoreleas Property

2011-08-11 10:27:37

iPhoneUIView视图

2011-08-11 10:16:23

iPhoneUIView视图

2011-08-15 15:44:46

iPhone开发PDF
点赞
收藏

51CTO技术栈公众号