自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iPhone應(yīng)用程序 Say Hello實(shí)例操作 (下篇)

移動(dòng)開發(fā) iOS
本文介紹的是iPhone應(yīng)用程序 Say Hello實(shí)例操作,以圖文的形式為友們介紹,剛方便與操作學(xué)習(xí),我們先來看內(nèi)容。

iPhone應(yīng)用程序 Say Hello實(shí)例操作 (下篇)是本節(jié)介紹的內(nèi)容,繼續(xù) iPhone應(yīng)用程序 Say Hello實(shí)例操作 (中篇)的內(nèi)容開始介紹,先來看本節(jié)介紹。

實(shí)現(xiàn)視圖控制器

實(shí)現(xiàn)視圖控制器需要完成以下幾件事:

定義插座變量和動(dòng)作方法,和Nib文件的視圖中的界面元素進(jìn)行關(guān)聯(lián)

實(shí)現(xiàn)點(diǎn)擊按鈕后的相關(guān)邏輯——根據(jù)輸入的名字顯示相應(yīng)的招呼語,判斷輸入的名字是不是為空是不是超長

用戶點(diǎn)擊鍵盤上的完成(Done)按鍵后,鍵盤會(huì)消失

建立連接

從業(yè)務(wù)角度來看,我們需要和界面的幾個(gè)元素建立關(guān)聯(lián):

文本輸入框,獲取它的輸入文字

文本標(biāo)簽,讓它顯示特定文字

按鈕,響應(yīng)它的點(diǎn)擊事件

在Xcode4之前,Interface Builder和Xcode是分開的,一般是先在Xcode中定義好插座變量和動(dòng)作方法,然后再在InterfaceBuilder中去建立界面元素和視圖控制器之間的連接,到Xcode4之后,Interface Builder和Xcode已經(jīng)統(tǒng)一合并在了一起,所以這部分也有一些變化,Xcode4讓這部分工作變的更加容易一些,可以直接從視圖編輯界面拖動(dòng)連接到代碼文件。

在我們正在開發(fā)的SayHello項(xiàng)目中,現(xiàn)在我們需要添加一個(gè)動(dòng)作方法到視圖控制器,當(dāng)界面上的按鈕被點(diǎn)擊時(shí),它會(huì)發(fā)送一個(gè)sayHello:消息到視圖控制器,所以接下來要為按鈕創(chuàng)建一個(gè)sayHello:動(dòng)作方法:

在Xcode中,選擇視圖控制器對應(yīng)的Nib文件(RootViewController.xib)

顯示Assistant editoriPhone應(yīng)用程序 Say Hello實(shí)例操作

讓Assistant顯示視圖控制器的頭文件(RootViewController.h)

iPhone應(yīng)用程序 Say Hello實(shí)例操作

按住Control鍵,從Nib文件中的按鈕拖動(dòng)到頭文件的方法聲明代碼區(qū)域

在彈出的面板中,將按鈕和視圖控制器之間的連接設(shè)置為動(dòng)作(Action)

設(shè)置 Connection 為 Action

設(shè)置 Name 為 sayHello:

設(shè)置 Type 為 id

設(shè)置 Event 為 Touch Up Inside,也就是用戶在點(diǎn)擊按鈕,然后釋放后觸發(fā)

設(shè)置 Arguments 為 Sender 

iPhone應(yīng)用程序 Say Hello實(shí)例操作

點(diǎn)擊Connect建立連接

通過上面的為按鈕添加動(dòng)作的操作,完成了兩件事

添加了相應(yīng)的代碼到視圖控制器的類中

頭文件中增加了如下代碼:

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

并且實(shí)現(xiàn)文件中增加了相應(yīng)的實(shí)現(xiàn)方法:

  1. - (IBAction)sayHello:(id)sender {  

IBAction 是一個(gè)特殊的關(guān)鍵字,它唯一的作用是告訴Interface Builder將某個(gè)方法當(dāng)成目標(biāo)/動(dòng)作關(guān)聯(lián)中的動(dòng)作。它被定義為void。

建立了按鈕到視圖控制器之間的連接。建立連接的意義,等同于在按鈕上調(diào)用 addTarget:action:forControlEvents: ,并且 target 是文件擁有者(File's Owner)也就是視圖控制器,action 是 sayHello: 方法,對應(yīng)的事件是 UIControlEventTouchUpInside。

接下來要建立文本輸入框和文本標(biāo)簽之間的連接:

在Xcode中,選擇視圖控制器對應(yīng)的Nib文件(RootViewController.xib)

顯示Assistant editoriPhone應(yīng)用程序 Say Hello實(shí)例操作

讓Assistant顯示視圖控制器的頭文件(RootViewController.h)

按住Control鍵,從Nib文件中的文本輸入框拖動(dòng)到頭文件的方法聲明代碼區(qū)域

iPhone應(yīng)用程序 Say Hello實(shí)例操作

在彈出的面板中,將文本輸入框和視圖控制器之間的連接設(shè)置為插座(Outlet)

設(shè)置 Connection 為 Outlet

設(shè)置 Name 為 nameTextField

設(shè)置 Type 為 UITextField 

iPhone應(yīng)用程序 Say Hello實(shí)例操作

點(diǎn)擊Connect建立連接

通過上面的為文本輸入框添加插座變量的操作,完成了兩件事

添加了相應(yīng)的代碼到視圖控制器的類中

頭文件中增加了如下代碼:

  1. @property (nonatomic, retain) IBOutlet UITextField *nameTextField; 

并且實(shí)現(xiàn)文件中增加了相應(yīng)的實(shí)現(xiàn)方法:

在頂部增加了:

  1. @synthesize nameTextField; 

在 dealloc 方法中添加了

  1. [nameTextField release]; 

在 viewDidUnload 方法中添加了:

  1. [self setNameTextField:nil]; 

IBOutlet是一個(gè)特殊的關(guān)鍵字,它唯一的作用是通知Interface Builder將某個(gè)實(shí)例變量或者屬性當(dāng)成插座變量。實(shí)際上,這個(gè)關(guān)鍵字被定義為空白,因此在編譯的時(shí)候它沒有任何作用。

建立了文本輸入框到視圖控制器之間的連接。建立連接的意義,等同于在視圖控制器上調(diào)用 setNameTextFiled: 方法,將文本輸入框作為參數(shù)傳入。

按照上面創(chuàng)建文本輸入框插座變量相同的方法,再建立用來顯示問候語的文本標(biāo)簽的插座變量,并且將插座變量命名為 greetingLabel,類型為 UILabel。

實(shí)現(xiàn)邏輯代碼點(diǎn)擊視圖中的按鈕,它會(huì)向視圖控制器發(fā)送 sayHello: 消息,之后,視圖控制器會(huì)取得文本輸入框文字內(nèi)容,根據(jù)內(nèi)容來更新用來顯示問候語的文本標(biāo)簽的內(nèi)容。以下是RootViewController.m文件中 sayHello: 方法代碼的實(shí)現(xiàn):

  1. - (IBAction)sayHello:(id)sender {  
  2. // 獲取文本輸入框內(nèi)容,并存儲(chǔ)到變量中  
  3. NSString *nameString = nameTextField.text;  
  4. // 檢查輸入的名字是否為空,如果為空,彈出提示信息  
  5. if (nameString.length == 0) {  
  6. UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"名字不能為空" message:@"請輸入名字后,重新點(diǎn)擊按鈕。
  7. " delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];  
  8. [alertView show];  
  9. [alertView release];  
  10. greetingLabel.text = @"";  
  11. return;  
  12. }  
  13. // 檢查名字是不是超過16個(gè)字符,超過16個(gè)字符自動(dòng)截?cái)? 
  14. if (nameString.length > 16) {  
  15. nameString = [nameString substringToIndex:16];  
  16. }  
  17. // 根據(jù)輸入的名字,生成問候語  
  18. NSString *greeting = [NSString stringWithFormat:@"你好,%@!", nameString];  
  19. // 顯示問候語  
  20. greetinggreetingLabel.text = greeting;  

對于這個(gè)方法有幾點(diǎn)補(bǔ)充說明:

UIAlertView是專門用來顯示消息提示對話框

stringWithFormat:方法符串按照格式化字符串所指定的格式創(chuàng)建一個(gè)新字符串。%@表明此處應(yīng)該使用一個(gè)字符串對象來代替。

隱藏鍵盤編譯并運(yùn)行應(yīng)用程序。在文本框中輸入“Jim”,點(diǎn)擊按鍵后,標(biāo)簽顯示“你好, Jim!” 。但是選擇文本字段進(jìn)行輸入,您會(huì)發(fā)現(xiàn)您沒有辦法表示已完成輸入,也沒有辦法消除鍵盤。在iPhone應(yīng)用程序中,當(dāng)一個(gè)允許文本輸入的元素變成第一響應(yīng)者時(shí),鍵盤就會(huì)自動(dòng)顯示出來,而當(dāng)該元素不再處于第一響應(yīng)者狀態(tài),鍵盤就會(huì)消失。我們不能直接向鍵盤發(fā)送消息,但是可以切換文本輸入元素的第一響應(yīng)者狀態(tài),利用該操作的附加效果來顯示或消除鍵盤。在應(yīng)用程序中,當(dāng)用戶點(diǎn)擊文本字段時(shí),該控件就會(huì)變成第一響應(yīng)者,因此鍵盤就會(huì)顯示出來。而當(dāng)用戶點(diǎn)擊鍵盤中的Done按鍵時(shí),希望鍵盤消失。

UITextFieldDelegate協(xié)議包含一個(gè)textFieldShouldReturn:方法,一旦用戶點(diǎn)擊Return按鍵,文本字段就會(huì)調(diào)用該方法(和按鍵的標(biāo)題無關(guān))。但將視圖控制器設(shè)置成文本輸入框(UITextField)的委托(Delegate),才可以實(shí)現(xiàn)該方法,在方法中向文本字段發(fā)送resignFirstResponder消息,這個(gè)消息的附加效果會(huì)讓鍵盤消失。

通過以下步驟設(shè)置文本輸入框的委托(delegate)連接:

在Xcode中,選擇視圖控制器對應(yīng)的Nib文件(RootViewController.xib)

按住Control鍵,點(diǎn)擊文本輸入框

在彈出的半透明面板中,選中 delegate 后面的圓點(diǎn),并拖動(dòng)到 File's Owner

iPhone應(yīng)用程序 Say Hello實(shí)例操作

接下來,來實(shí)現(xiàn)將RootViewController作為文本輸入框nameTextField的委托(delegate)

在視圖控制器的頭文件(RootViewController.h)中,在UIViewController后面添加<UITextFieldDelegate>:
 
@interface RootViewController : UIViewController<UITextFieldDelegate> {

這個(gè)申明表示視圖控制器RootViewController將支持UITextFieldDelegate協(xié)議

在視圖控制器的實(shí)現(xiàn)文件(RootViewController.m),實(shí)現(xiàn) textFieldShouldReturn: 方法: 

  1. - (BOOL)textFieldShouldReturn:(UITextField *)textField {  
  2. if (nameTextField == textField) {  
  3. [nameTextField resignFirstResponder];  
  4. }  
  5. return YES;  

因?yàn)檫@個(gè)應(yīng)用程序只有一個(gè)文本輸入框,所以其實(shí)不需要包含nameTextField == textField檢查。不過有些時(shí)候,對象可能會(huì)被設(shè)置成多個(gè)相同類型的對象的委托,這時(shí)候就需要來區(qū)分這些對象。

至此我們已經(jīng)開發(fā)完成了整個(gè)應(yīng)用程序。接下來將對它進(jìn)行測試。

測試

這個(gè)應(yīng)用程序相對簡單,我們設(shè)計(jì)幾個(gè)測試場景:

輸入正常的名字,例如“寶玉”,然后點(diǎn)擊按鈕,看看是不是會(huì)顯示“你好,寶玉!”

不輸入任何名字,點(diǎn)擊按鈕,看看是不是會(huì)有提示信息,要求輸入名字。

分別輸入16個(gè)、17個(gè)、20個(gè)字符的名字,看看名字是不是最多只能顯示前16個(gè)字符

點(diǎn)擊文本輸入框,顯示鍵盤,點(diǎn)擊鍵盤上的Done按鈕,看鍵盤是不是會(huì)隱藏

針對這個(gè)測試場景,逐一做一下功能的測試,看起來結(jié)果和我們預(yù)期的完全一樣。

iPhone應(yīng)用程序 Say Hello實(shí)例操作 iPhone應(yīng)用程序 Say Hello實(shí)例操作

小結(jié):關(guān)于iPhone應(yīng)用程序 Say Hello實(shí)例操作 (下篇)的內(nèi)容介紹完了,希望本實(shí)例對你有所幫助。通過這樣一個(gè)簡單的項(xiàng)目,了解以下知識點(diǎn): iOS開發(fā)常用的一些設(shè)計(jì)模式;iPhone程序的啟動(dòng)過程;視圖控制器和Nib文件如何建立連接,這些知識對于iPhone開發(fā)和iOS開發(fā)來說,都是會(huì)經(jīng)常用到的知識。

本文來自:http://www.cnblogs.com/dotey/archive/2011/06/09/2075954.html

責(zé)任編輯:zhaolei 來源: 博客園
相關(guān)推薦

2011-07-19 10:42:41

iPhone 應(yīng)用程序 模型

2011-07-19 10:56:15

iPhone 控制器 視圖

2011-07-26 11:13:15

iPhone PXL

2011-07-26 16:43:59

iPhone Web 服務(wù)器

2011-07-26 13:23:14

iPhone 圖片 相冊

2011-07-21 10:47:37

iPhone Cocoa 委托

2011-07-19 09:58:36

2011-07-26 10:09:08

iPhone 多語言 國際化

2011-07-26 09:41:23

iPhone xcode Mac OS X

2010-08-27 10:41:41

iPhone核心應(yīng)用程序

2011-07-20 15:58:58

iPhone 應(yīng)用程序 生命周期

2011-07-19 14:36:32

iPhone

2011-07-27 17:30:40

iPhone Locate 定位

2011-08-12 14:54:45

iPhone委托

2011-08-05 13:49:53

iPhone 應(yīng)用 開發(fā)

2011-07-21 15:56:32

iPhone 截屏

2011-07-05 17:07:46

Qt 插件 模塊

2011-07-06 16:25:10

iPhone 程序 調(diào)用

2011-07-26 16:33:56

iPhone Delegate

2012-05-24 15:49:35

HTML5
點(diǎn)贊
收藏

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