偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

iPhone開發(fā)應(yīng)用處理基本交互

移動(dòng)開發(fā) iOS
本文介紹的是在iPhone開發(fā)應(yīng)用中處理基本交互的內(nèi)容,主要介紹了如何處理實(shí)現(xiàn)基本的交互,來(lái)阿卡呢本文詳細(xì)內(nèi)容。

iPhone開發(fā)應(yīng)用處理基本交互是本文要介紹的內(nèi)容,MVC:(Model View controller 模型,視圖,控制器)目標(biāo):實(shí)現(xiàn)三類盡可能截然不同的代碼,編寫的任何對(duì)象都應(yīng)該很明顯的劃分為哪一類,并且其功能大部分不屬于或者完全不屬于另外兩個(gè)類。

MVC可以幫助確保實(shí)現(xiàn)最大的可重用性。

模型:保存應(yīng)用程序的數(shù)據(jù)的類。設(shè)計(jì)一些OBjective-C類來(lái)保存應(yīng)用程序的數(shù)據(jù)。

視圖:窗口、控件和其他用戶可以看到并能與之交互的元素的組成部分。

控制器:將模型和視圖綁定在一起,確定如何處理用戶輸入的應(yīng)用程序邏輯。由開發(fā)人員創(chuàng)建的類和特定于應(yīng)用程序的類組成。

Classes文件夾中的四個(gè)文件:(兩對(duì).m和.h文件)

IP_03buttonfunViewController將負(fù)責(zé)管理該視圖。

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

這是UIViewController的子類。(UIViewController局勢(shì)一個(gè)通用的控制器,他是UIKit的一部分)

IP_03buttonfunAppDelegate實(shí)現(xiàn)了應(yīng)用程序委托。委托,負(fù)責(zé)為另外一個(gè)對(duì)象處理特定事情的類。通過(guò)應(yīng)用程序委托,我們可以在預(yù)先定義的時(shí)間為UIApplication處理事情。

輸出口(OutLet):

輸出口Outlet,是一個(gè)特殊的實(shí)例變量,控制器類可以使用他來(lái)引用nib中的對(duì)象??梢园演敵隹诳闯墒侵赶騨ib中的對(duì)象的指針。例如:假設(shè)在IB中創(chuàng)建一個(gè)文本標(biāo)簽,需要在代碼中對(duì)該文本標(biāo)簽進(jìn)行修改操作,這時(shí)就需要聲明一個(gè)輸入口,并將其指向該標(biāo)簽,這樣就可以通過(guò)改輸入口來(lái)修改該標(biāo)簽了。

輸出口是使用關(guān)鍵字IBOutlet聲明的實(shí)例變量。

IBOutlet關(guān)鍵字的定義如下:

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

對(duì)編譯器而言,IBoutlet并未執(zhí)行任何操作,他僅僅是告訴IB,此實(shí)例變量將被連接到nib中的對(duì)象。

操作(Action):

操作是控制器類中的方法,通過(guò)IBAction來(lái)聲明。該關(guān)鍵字告訴IB,此方法是一個(gè)操作,并且可以被某個(gè)控件觸發(fā)。

操作的聲明如下:

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

沒(méi)有任何返回值。操作方法接受一個(gè)參數(shù),該參數(shù)為id類型。名稱被制定為sender,觸發(fā)操作的控件將使用sender參數(shù)引用其自身。

@property聲明:

在以前的操作中遇到這個(gè)問(wèn)題一直沒(méi)有答案,今天在看這一章的時(shí)候,上面有詳細(xì)的講解,好好學(xué)學(xué)。

@property所聲明的是一些屬性。這也是Objective-C2.0的一個(gè)新特性。就想.NET中的set和get一樣。在Objective-C中添加屬性,通常會(huì)有設(shè)置屬性和檢索屬性,這中方法被成為訪問(wèn)方法和修改方法。例如下面的形式:

  1. -(id)foo //訪問(wèn)方法  
  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就告別了這種枯燥乏味的訪問(wèn)方法和修改方法。我們可以使用@property和@synthesize相結(jié)合,可以通知編譯器在編譯的時(shí)候創(chuàng)建獲取方法和設(shè)置方法。一下面的例子為例:

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

其中的參數(shù)retain,通知編譯器向分配給此屬性的對(duì)象發(fā)送一個(gè)保留信息,這樣不會(huì)從內(nèi)存中清楚。這是必不可少的。因?yàn)槟J(rèn)行為assign需要與垃圾收集一起使用。垃圾收集在IPhone當(dāng)前尚未使用。

第二個(gè)可選屬性nonatomic將更改訪問(wèn)方法和修改方法的生成方式。

Objective-C屬性還具有另外一個(gè)特性,呢就是點(diǎn)表示法。

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

得到Button的Title:

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

在請(qǐng)求按鈕的標(biāo)題時(shí)我們要提供控件的狀態(tài),4種可能的狀態(tài)為:

a:正常(normal)表示控件處于活動(dòng)狀態(tài),但當(dāng)前并未使用

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

c:禁用(disabled)表示按鈕未啟用且無(wú)法使用

d:以選中(selected)僅特定控件具有該狀態(tài),表示控件當(dāng)前已被選中

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

等同于

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

實(shí)現(xiàn)的功能相同但是第一種方法不建議用。第一種方法被成為簡(jiǎn)便方法或工廠方法,它將返回自動(dòng)釋放的對(duì)象。在對(duì)象使用完成之后還會(huì)保留一段時(shí)間,浪費(fèi)了內(nèi)存,不建議使用。

[statusText release];既然我們沒(méi)有實(shí)例化該對(duì)象,為什么還有release呢?

因?yàn)槲覀儗?shí)現(xiàn)了各輸出口的屬性,并且為該屬性指定了retain參數(shù),因此我們必須要釋放他。

創(chuàng)建例子:

打開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 

代碼創(chuàng)建完畢,現(xiàn)在可以關(guān)聯(lián)IB了。

拖兩個(gè)Button一個(gè)Label到View中。修改Button為L(zhǎng)ift和Right,修改Label為空并且調(diào)整適當(dāng)?shù)拇笮 ?/p>

創(chuàng)建控件完畢。

選中Button Lift,然后Apple+2,看到Touch Up inside后面的一個(gè)小圈圈,用鼠拖到File's Ouner上面。同理Button Right一樣的操作。

選中Label,Apple+2會(huì)看到statusText,和上面一樣拖到File's Ouner上。

程序完成,Build and go運(yùn)行結(jié)果如下。

iPhone開發(fā)應(yīng)用處理基本交互

小結(jié):iPhone開發(fā)應(yīng)用處理基本交互的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2011-07-26 09:41:23

iPhone xcode Mac OS X

2013-06-20 10:17:34

Android應(yīng)用

2011-07-08 14:58:16

iPhone Xcode iOS

2011-07-19 09:46:38

2011-07-19 09:58:36

2011-08-08 10:10:14

iPhone開發(fā) 圖片 方法

2011-08-08 16:56:44

iPhone 字符處理 視圖

2011-08-10 10:10:21

iPhoneUIPopoverCo

2011-08-09 17:29:29

iPhone文件屏幕

2014-07-30 09:56:41

iPhoneiPad

2021-01-06 08:13:08

公有云Docker容器

2011-08-08 14:57:46

iPhone Autoreleas Property

2011-08-05 14:48:06

iPhone應(yīng)用 異步隊(duì)列

2011-08-09 13:10:32

iPhone地圖開發(fā)

2011-08-10 17:37:00

iPhoneASIHTTPRequ

2011-08-11 10:03:43

iPhonecocoaNSRunLoop

2011-08-18 10:39:46

iPhone開發(fā)界面

2011-08-11 10:16:23

iPhoneUIView視圖

2011-08-11 10:27:37

iPhoneUIView視圖

2011-08-08 18:19:09

iPhone音頻播放
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)