自拍偷在线精品自拍偷,亚洲欧美中文日韩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)容。項(xiàng)目開始了。

添加視圖控制器(UIViewController)

添加視圖控制器文件在iPhone應(yīng)用程序中,視圖控制器(UIViewController)起著核心作用。顧名思義,視圖控制器負(fù)責(zé)管理控制視圖。在iPhone上,它們也幫助進(jìn)行導(dǎo)航和內(nèi)存管理。

選中Xcode項(xiàng)目管理器里的項(xiàng)目(即SayHello項(xiàng)目,位于Groups and Files列表的頂部)或者選中SayHello文件夾——新文件在添加時(shí)會(huì)被加入到當(dāng)前選擇的位置。 選中后,在Xcode菜單中選擇 File > New > New File,也可以在選中的文件夾上面點(diǎn)右鍵,選擇 New File。

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

在New File窗口中,請(qǐng)選擇Cocoa Touch,然后選擇UIViewController subclass。

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

點(diǎn)擊 Next 按鈕,在Options窗口,請(qǐng)勾選 “With XIB for user interface”復(fù)選框。選中 “With XIB for user interface”后,Xcode在創(chuàng)建視圖控制器的同時(shí),會(huì)為其創(chuàng)建一份nib文件,并將該文件添加到項(xiàng)目中。

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

點(diǎn)擊Next按鈕,在其后出現(xiàn)的保存文件窗口中,為文件起個(gè)名字,例如RootTimelineViewController,并選擇文件存儲(chǔ)的位置,如下所示:

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

點(diǎn)擊 Save,文件會(huì)被添加到項(xiàng)目中。接下來,我們將創(chuàng)建控制器類的實(shí)例。

創(chuàng)建視圖控制器實(shí)例現(xiàn)在,我們有了視圖控制器的類和nib文件,但要在應(yīng)用程序代理中使用它,還必須創(chuàng)建類的實(shí)例,并且將實(shí)例存儲(chǔ)在變量中,以便操作它。

在應(yīng)用程序委托類的頭文件(即SayHelloAppDelegate.h)中執(zhí)行下述操作:

在一個(gè)類中訪問另一個(gè)類,首先需要引用被訪問類的頭文件。所以我們先在應(yīng)用程序委托頭文件(SayHelloAppDelegate.h)的接口聲明前面-即SayHelloAppDelegate聲明前面引用視圖控制器(RootViewController)的頭文件:

  1. #import "RootViewController.h"  

然后在頭文件大括號(hào)之間添加下面的代碼,這是為了向應(yīng)用程序委托添加一個(gè)實(shí)例變量:

  1. RootViewController *viewController; 

在大括號(hào)之后 @end之前添加下面的屬性聲明:

  1. @property (nonatomic, retain) RootViewController *viewController; 

在頭文件中添加完相應(yīng)變量和屬性申明后,需要在對(duì)應(yīng)的實(shí)現(xiàn)文件中,合成屬性的存取方法,在dealloc方法中釋放視圖控制器的實(shí)例。

在應(yīng)用程序委托類的實(shí)現(xiàn)文件(即SayHelloAppDelegate.m)中執(zhí)行下述操作:

在類的 @implementation代碼塊中通知編譯器為視圖控制器合成存取方法:

  1. @synthesize viewController; 

在dealloc方法起始處釋放視圖控制器:

  1. [viewController release]; 

我們已經(jīng)把視圖控制器屬性添加到應(yīng)用程序的委托,現(xiàn)在需要實(shí)際創(chuàng)建一個(gè)視圖控制器實(shí)例,并將其設(shè)置為屬性的值。

在應(yīng)用程序委托類實(shí)現(xiàn)文件(即SayHelloWorldAppDelegate.m文件)中的applicationDidFinishLaunching: 方法開頭添加如下代碼,這些代碼用于創(chuàng)建一個(gè)RootViewController實(shí)例:

  1. RootViewController *controller = [[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];  
  2. self.viewController = controller;  
  3. [controller release]; 

這段代碼的作用如下:

創(chuàng)建RootViewController這個(gè)視圖控制器的實(shí)例。使用alloc方法創(chuàng)建一個(gè)視圖控制器,然后用initWithNibName:bundle:方法對(duì)其進(jìn)行初始化。init方法先指定控制器應(yīng)加載的nib文件,然后指定在哪個(gè)程序包中可找到該文件。程序包是文件系統(tǒng)某個(gè)位置的抽象,該位置存放了應(yīng)用程序?qū)?huì)用到的代碼和資源。

使用屬性的存取方法,將創(chuàng)建好的視圖控制器實(shí)例設(shè)置為viewController屬性變量的值

根據(jù)內(nèi)存管理規(guī)則釋放視圖控制器

視圖控制器用來配置和管理在應(yīng)用程序中看到的視圖,每一個(gè)視圖也對(duì)應(yīng)有一個(gè)視圖控制器來管理。窗體(window)有一個(gè)根視圖控制器——這個(gè)視圖控制器負(fù)責(zé)配置當(dāng)窗體顯示時(shí)最先顯示的視圖。要讓你的視圖控制器的內(nèi)容顯示在窗體中,需要去設(shè)置窗體的根視圖控制器為你的視圖控制器。

所以我們的項(xiàng)目中,在上面創(chuàng)建視圖控制器實(shí)例代碼后面再添加一行代碼,來設(shè)置窗體的根視圖控制器為我們新添加的視圖控制器:

  1. self.window.rootViewController = controller

最后一行來自于Xcode提供的模板自動(dòng)生成的代碼:

  1. [self.window makeKeyAndVisible]; 

這行代碼會(huì)讓包含了視圖控制器視圖的Window窗口顯示在屏幕上。

本章完整代碼,SayHelloAppDelegate.h文件:

  1. #import <UIKit/UIKit.h> 
  2. #import "RootViewController.h"  
  3. @interface SayHelloAppDelegate : NSObject <UIApplicationDelegate> {  
  4. RootViewController *viewController;  
  5. }  
  6. @property (nonatomic, retain) IBOutlet UIWindow *window;  
  7. @property (nonatomic, retain) RootViewController *viewController;  
  8. @end  
  9. SayHelloAppDelegate.m文件:  
  10. #import "SayHelloAppDelegate.h"  
  11. @implementation SayHelloAppDelegate  
  12. @synthesize window=_window;  
  13. @synthesize viewController;  
  14. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  15. {  
  16. RootViewController *controller = [[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];  
  17. self.viewController = controller;  
  18. [controller release];  
  19. self.window.rootViewController = controller;  
  20. [self.window makeKeyAndVisible];  
  21. return YES;  
  22. }  
  23. - (void)dealloc  
  24. {  
  25. [_window release];  
  26. [viewController release];  
  27. [super dealloc];  
  28. }  
  29. @end 

測(cè)試運(yùn)行在Xcode的菜單中選擇 Product > Run 或者點(diǎn)擊左上角工具欄上的 Run 按鈕,iPhone模擬器應(yīng)該會(huì)自動(dòng)啟動(dòng)。當(dāng)應(yīng)用程序啟動(dòng)后,還是看到一個(gè)白色屏幕,不過第一次看到的白色屏幕,是應(yīng)用程序代理中的Window,而這次看到的白色屏幕,是視圖控制器RootViewController中的視圖。

下一步,我們將開始對(duì)界面進(jìn)行編輯。

編輯Nib文件

在iPhone開發(fā)中,一般都會(huì)用NIB文件來來負(fù)責(zé)界面顯示,也就是MVC模型里面的視圖對(duì)象,而NIB文件只包含用戶界面元素,不包含任何源碼,那么怎么讓視圖對(duì)象和視圖控制器關(guān)聯(lián)起來呢?這就需要用到兩個(gè)非常重要的概念:插座變量(outlet)和文件擁有者代理對(duì)象(File's Owner)。

視圖控制器的視圖和Nib文件視圖控制器主要的職責(zé)就是配置和管理應(yīng)用程序中所有的視圖,一般來說,視圖控制器的視圖是放在一個(gè)Nib文件中,當(dāng)然也可以不需要Nib文件,通過程序創(chuàng)建視圖,典型的如UITableViewController這樣的視圖控制器,就可以不需要Nib文件。在創(chuàng)建視圖控制器實(shí)例時(shí),其中一個(gè)主要的構(gòu)造函數(shù) initWithNibName:bundle: 的第一個(gè)參數(shù)就是視圖控制器對(duì)應(yīng)的Nib文件的名字。視圖控制器在其 loadView 方法中加載它的Nib文件。如果是使用 initWithNibName:bundle: 構(gòu)造函數(shù)生成的實(shí)例,并且你想在視圖加載完成后進(jìn)行額外的設(shè)置,只要重寫視圖控制器的 viewDidLoad 方法就好了。

在Xcode中點(diǎn)擊打開視圖控制器的Nib文件(即RootViewController.xib文件),在Xcode中即可直接查看和編輯。文件包含三個(gè)對(duì)象,文件擁有者代理(File's Owner),第一響應(yīng)者代理(First Responder)以及一個(gè)視圖(View)。視圖(View)是視圖控制器的主視圖,在主視圖中還可以添加若干子視圖。文件擁有者代理(File's Owner)代表Nib文件對(duì)應(yīng)的視圖控制器類。理解文件所有者代理的角色,以及如何建立文件所有者和Nib文件中界面元素之間的連接,是非常重要的。

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

小貼士: 在Xcode中編輯Nib文件時(shí),可以通過點(diǎn)擊右上角工具欄按鈕iPhone應(yīng)用程序 Say Hello實(shí)例操作顯示隱藏相應(yīng)面板,方便對(duì)界面編輯和屬性設(shè)置。

文件擁有者(File's Owner)在一個(gè)Nib文件中,文件擁有者對(duì)象是其中最重要的對(duì)象之一,因?yàn)檎峭ㄟ^它,來建立起應(yīng)用程序代碼和Nib界面文件中對(duì)象之間的連接,具體來說,它就是對(duì)應(yīng)Nib文件的視圖控制器對(duì)象。以本項(xiàng)目為例,RootViewController.xib這個(gè)Nib文件的文件擁有者對(duì)象就是RootViewController類的實(shí)例。

一般來說,在使用模板同時(shí)創(chuàng)建UIViewController文件和對(duì)應(yīng)的Nib文件時(shí),它默認(rèn)會(huì)設(shè)置Nib文件對(duì)應(yīng)的文件擁有者為創(chuàng)建的UIViewController類。如果要修改或者設(shè)置Nib文件對(duì)應(yīng)的文件擁有者,可以使用 Identity Inspector 面板進(jìn)行設(shè)置。

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

如上圖所示, 本項(xiàng)目的RootViewController.xib文件對(duì)應(yīng)的文件所有者,在Identity Inspector 面板中,Custom Class部分的Class項(xiàng),可以看到對(duì)應(yīng)的值是RootViewController,這表示文件擁有者就是RootViewController類的實(shí)例,就可以在Xcode中訪問文件擁有者類里面標(biāo)志為IBOutlet的屬性和IBAction的方法,和Nib文件中的界面元素建立關(guān)聯(lián)。

視圖插座變量

在Xcode中,使用 Inspector 面板,或者在連接面板,可以查看、創(chuàng)建、刪除對(duì)象之間的連接。要查看視圖控制器的連接,可以通過以下步驟:

在Xcode的界面中,從左側(cè)的文件組選中要查看的視圖控制器的Xib文件
在視圖編輯界面,點(diǎn)擊選中 File's Owner
在 Inspector 面板,選中 Connection inspector,這里會(huì)顯示文件所有者所有的插座連接

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

在視圖編輯界面,按住Control鍵點(diǎn)擊 File's Owner 或者在 File's Owner上點(diǎn)擊右鍵,彈出一個(gè)黑色半透明的面板顯示文件所有者的所有連接

在上面第三步,右側(cè)面板顯示的連接面板和右鍵點(diǎn)擊File's Owner彈出的半透明連接面板,顯示的信息和作用都是一樣的,可以根據(jù)個(gè)人習(xí)慣靈活使用。到目前為止唯一的連接是視圖控制器的 view 插座變量。一個(gè)插座變量就對(duì)應(yīng)視圖控制器類的一個(gè)屬性(有時(shí)候也可以是一個(gè)實(shí)例變量),只不過這個(gè)屬性和nib文件中的某個(gè)界面元素連接在一起。此處的view的連接,表明當(dāng)nib文件 RootViewController.xib 被加載,并且UIView的實(shí)例解檔之后,視圖控制器的view實(shí)例變量會(huì)被設(shè)置為指向nib文件中的視圖。

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

中間測(cè)試

在項(xiàng)目開發(fā)中,尤其在對(duì)開發(fā)工具和語言不熟悉的時(shí)候,需要經(jīng)常性的對(duì)新增的功能進(jìn)行測(cè)試,以確保當(dāng)前功能運(yùn)行是正常的。比如我們新增了RootViewController這個(gè)自定義視圖控制器,需要去測(cè)試一下它是不是已經(jīng)成功添加。要測(cè)試視圖控制器工作正常,簡(jiǎn)單的辦法修改視圖控制器的視圖的背景色,例如修改為粉紅色背景,然后重新運(yùn)行,看看是不是界面變成了紅色背景。

要設(shè)置視圖控制器的視圖的背景色,步驟如下:

在Xcode的界面中,從左側(cè)的文件組選中視圖控制器的Xib文件(RootViewController.xib)

在右側(cè)的功能區(qū)域,選擇屬性面板(Attributes inspector)

在編輯區(qū)域,選擇視圖

在視圖的屬性面板,點(diǎn)擊背景色(Background)對(duì)應(yīng)的顏色下拉框,會(huì)彈出顏色選擇面板

在顏色選擇面板,選擇一個(gè)合適的顏色,例如粉紅色

保存nib文件

點(diǎn)擊左上角工具欄的Run按鈕,編譯運(yùn)行項(xiàng)目

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

正常情況下,編譯應(yīng)該不會(huì)出現(xiàn)任何錯(cuò)誤,運(yùn)行后會(huì)彈出模擬器,結(jié)果如下圖所示:

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

確認(rèn)沒有問題后,再將應(yīng)用的背景色還原。還原的話,將視圖的背景色設(shè)置為白色就好了。

配置視圖

Xcode提供了一套對(duì)象庫,可以直接添加到Nib文件中。其中一部分示界面元素,例如按鈕和文本輸入框;其他一部分是控制器對(duì)象,例如視圖控制器。我們當(dāng)前項(xiàng)目的nib文件已經(jīng)包含了視圖,現(xiàn)在只要添加按鈕和文本輸入框就好了。從對(duì)象庫中將用戶界面元素拖動(dòng)到視圖中,基本步驟如下:

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

在Xcode的界面中,從左側(cè)的文件組選中視圖控制器的Xib文件(RootViewController.xib)

在右側(cè)的功能區(qū)域,顯示對(duì)象庫(object library)

添加一個(gè)按鈕(UIButton),一個(gè)文本輸入框(UITextField),兩個(gè)文本標(biāo)簽(UILabel)到視圖中。可以從對(duì)象庫里面拖動(dòng)并將它們放到視圖
 
參考前面的原型設(shè)計(jì),對(duì)界面元素的尺寸和布局進(jìn)行調(diào)整

將右側(cè)功能區(qū)域切換到屬性面板(Attributes inspector)

選中文本輸入框(Text Field),設(shè)置Placehold屬性為“請(qǐng)輸入姓名”

選中左上側(cè)的文本標(biāo)簽(UILabel),設(shè)置Text屬性為“姓名”

選中下面的文本標(biāo)簽(UILabel),設(shè)置Text屬性為空,Alignment屬性設(shè)置為居中對(duì)齊

選中按鈕(UIButton),設(shè)置Title屬性為“招呼”

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

設(shè)置好的界面如下所示:

如果我們想讓用戶在輸入時(shí)有一些更好的體驗(yàn),比如用戶輸入英文名時(shí),默認(rèn)會(huì)首字母大寫;比如鍵盤會(huì)顯示完成(Done)按鍵,點(diǎn)擊后完成輸入隱藏鍵盤。要支持這樣的輸入細(xì)節(jié),通過設(shè)置文本框?qū)傩跃涂梢酝瓿桑?/p>

在Capitalization下拉列表,選擇Words,以支持首字母大寫

在Return Key下拉列表,選擇Done,以支持鍵盤上顯示完成(Done)按鍵

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

保存文件后,編譯運(yùn)行程序,可以看到運(yùn)行的界面效果和我們?cè)赬code中擺放的效果是一樣的。點(diǎn)擊按鈕,按鈕會(huì)高亮,在文本輸入框中點(diǎn)擊,會(huì)彈出輸入鍵盤,鍵盤里可以看到完成(Done)按鈕。但是還不能根據(jù)輸入的內(nèi)容去顯示文字,還不能隱藏鍵盤,因?yàn)槟壳拔覀冞€僅僅完成了視圖部分的工作,還需要讓視圖中的對(duì)象和視圖控制器的對(duì)象之間建立連接,并添加相應(yīng)的邏輯,才能實(shí)現(xiàn)。

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

小結(jié):關(guān)于iPhone應(yīng)用程序 Say Hello實(shí)例操作 (中篇)的內(nèi)容介紹完了,希望本文對(duì)你有所幫助。請(qǐng)繼續(xù)閱讀 iPhone應(yīng)用程序 Say Hello實(shí)例操作 (下篇)

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

2011-07-19 10:42:41

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

2011-07-19 11:12:07

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 圖片 相冊(cè)

2011-07-21 10:47:37

iPhone Cocoa 委托

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-06 16:25:10

iPhone 程序 調(diào)用

2011-07-26 16:33:56

iPhone Delegate

2012-05-24 15:49:35

HTML5

2011-08-10 09:31:33

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

2011-07-28 13:59:40

iPhone App
點(diǎn)贊
收藏

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