成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iPhone應用程序 Say Hello實例操作 (中篇)

移動開發 iOS
本文介紹的是iPhone應用程序 Say Hello實例操作,以圖文的形式為友們介紹,剛方便與操作學習,我們先來看內容。

iPhone應用程序 Say Hello實例操作 (中篇)是本節姐的內容,繼續 iPhone應用程序 Say Hello實例操作 (上篇)開始介紹,先來看內容。項目開始了。

添加視圖控制器(UIViewController)

添加視圖控制器文件在iPhone應用程序中,視圖控制器(UIViewController)起著核心作用。顧名思義,視圖控制器負責管理控制視圖。在iPhone上,它們也幫助進行導航和內存管理。

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

iPhone應用程序 Say Hello實例操作

在New File窗口中,請選擇Cocoa Touch,然后選擇UIViewController subclass。

iPhone應用程序 Say Hello實例操作

點擊 Next 按鈕,在Options窗口,請勾選 “With XIB for user interface”復選框。選中 “With XIB for user interface”后,Xcode在創建視圖控制器的同時,會為其創建一份nib文件,并將該文件添加到項目中。

iPhone應用程序 Say Hello實例操作

點擊Next按鈕,在其后出現的保存文件窗口中,為文件起個名字,例如RootTimelineViewController,并選擇文件存儲的位置,如下所示:

iPhone應用程序 Say Hello實例操作

點擊 Save,文件會被添加到項目中。接下來,我們將創建控制器類的實例。

創建視圖控制器實例現在,我們有了視圖控制器的類和nib文件,但要在應用程序代理中使用它,還必須創建類的實例,并且將實例存儲在變量中,以便操作它。

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

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

  1. #import "RootViewController.h"  

然后在頭文件大括號之間添加下面的代碼,這是為了向應用程序委托添加一個實例變量:

  1. RootViewController *viewController; 

在大括號之后 @end之前添加下面的屬性聲明:

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

在頭文件中添加完相應變量和屬性申明后,需要在對應的實現文件中,合成屬性的存取方法,在dealloc方法中釋放視圖控制器的實例。

在應用程序委托類的實現文件(即SayHelloAppDelegate.m)中執行下述操作:

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

  1. @synthesize viewController; 

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

  1. [viewController release]; 

我們已經把視圖控制器屬性添加到應用程序的委托,現在需要實際創建一個視圖控制器實例,并將其設置為屬性的值。

在應用程序委托類實現文件(即SayHelloWorldAppDelegate.m文件)中的applicationDidFinishLaunching: 方法開頭添加如下代碼,這些代碼用于創建一個RootViewController實例:

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

這段代碼的作用如下:

創建RootViewController這個視圖控制器的實例。使用alloc方法創建一個視圖控制器,然后用initWithNibName:bundle:方法對其進行初始化。init方法先指定控制器應加載的nib文件,然后指定在哪個程序包中可找到該文件。程序包是文件系統某個位置的抽象,該位置存放了應用程序將會用到的代碼和資源。

使用屬性的存取方法,將創建好的視圖控制器實例設置為viewController屬性變量的值

根據內存管理規則釋放視圖控制器

視圖控制器用來配置和管理在應用程序中看到的視圖,每一個視圖也對應有一個視圖控制器來管理。窗體(window)有一個根視圖控制器——這個視圖控制器負責配置當窗體顯示時最先顯示的視圖。要讓你的視圖控制器的內容顯示在窗體中,需要去設置窗體的根視圖控制器為你的視圖控制器。

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

  1. self.window.rootViewController = controller

最后一行來自于Xcode提供的模板自動生成的代碼:

  1. [self.window makeKeyAndVisible]; 

這行代碼會讓包含了視圖控制器視圖的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 

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

下一步,我們將開始對界面進行編輯。

編輯Nib文件

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

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

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

iPhone應用程序 Say Hello實例操作

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

文件擁有者(File's Owner)在一個Nib文件中,文件擁有者對象是其中最重要的對象之一,因為正是通過它,來建立起應用程序代碼和Nib界面文件中對象之間的連接,具體來說,它就是對應Nib文件的視圖控制器對象。以本項目為例,RootViewController.xib這個Nib文件的文件擁有者對象就是RootViewController類的實例。

一般來說,在使用模板同時創建UIViewController文件和對應的Nib文件時,它默認會設置Nib文件對應的文件擁有者為創建的UIViewController類。如果要修改或者設置Nib文件對應的文件擁有者,可以使用 Identity Inspector 面板進行設置。

iPhone應用程序 Say Hello實例操作

如上圖所示, 本項目的RootViewController.xib文件對應的文件所有者,在Identity Inspector 面板中,Custom Class部分的Class項,可以看到對應的值是RootViewController,這表示文件擁有者就是RootViewController類的實例,就可以在Xcode中訪問文件擁有者類里面標志為IBOutlet的屬性和IBAction的方法,和Nib文件中的界面元素建立關聯。

視圖插座變量

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

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

iPhone應用程序 Say Hello實例操作

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

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

iPhone應用程序 Say Hello實例操作

中間測試

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

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

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

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

在編輯區域,選擇視圖

在視圖的屬性面板,點擊背景色(Background)對應的顏色下拉框,會彈出顏色選擇面板

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

保存nib文件

點擊左上角工具欄的Run按鈕,編譯運行項目

iPhone應用程序 Say Hello實例操作

正常情況下,編譯應該不會出現任何錯誤,運行后會彈出模擬器,結果如下圖所示:

iPhone應用程序 Say Hello實例操作

確認沒有問題后,再將應用的背景色還原。還原的話,將視圖的背景色設置為白色就好了。

配置視圖

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

iPhone應用程序 Say Hello實例操作

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

在右側的功能區域,顯示對象庫(object library)

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

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

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

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

選中下面的文本標簽(UILabel),設置Text屬性為空,Alignment屬性設置為居中對齊

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

iPhone應用程序 Say Hello實例操作

設置好的界面如下所示:

如果我們想讓用戶在輸入時有一些更好的體驗,比如用戶輸入英文名時,默認會首字母大寫;比如鍵盤會顯示完成(Done)按鍵,點擊后完成輸入隱藏鍵盤。要支持這樣的輸入細節,通過設置文本框屬性就可以完成:

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

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

iPhone應用程序 Say Hello實例操作

保存文件后,編譯運行程序,可以看到運行的界面效果和我們在Xcode中擺放的效果是一樣的。點擊按鈕,按鈕會高亮,在文本輸入框中點擊,會彈出輸入鍵盤,鍵盤里可以看到完成(Done)按鈕。但是還不能根據輸入的內容去顯示文字,還不能隱藏鍵盤,因為目前我們還僅僅完成了視圖部分的工作,還需要讓視圖中的對象和視圖控制器的對象之間建立連接,并添加相應的邏輯,才能實現。

iPhone應用程序 Say Hello實例操作

小結:關于iPhone應用程序 Say Hello實例操作 (中篇)的內容介紹完了,希望本文對你有所幫助。請繼續閱讀 iPhone應用程序 Say Hello實例操作 (下篇)

責任編輯:zhaolei 來源: 博客園
相關推薦

2011-07-19 10:42:41

iPhone 應用程序 模型

2011-07-19 11:12:07

iPhone 控制器

2011-07-26 11:13:15

iPhone PXL

2011-07-26 16:43:59

iPhone Web 服務器

2011-07-21 10:47:37

iPhone Cocoa 委托

2011-07-26 13:23:14

iPhone 圖片 相冊

2011-07-26 10:09:08

iPhone 多語言 國際化

2011-07-20 15:58:58

iPhone 應用程序 生命周期

2011-07-26 09:41:23

iPhone xcode Mac OS X

2010-08-27 10:41:41

iPhone核心應用程序

2011-07-21 15:56:32

iPhone 截屏

2011-07-27 17:30:40

iPhone Locate 定位

2011-08-12 14:54:45

iPhone委托

2011-07-19 14:36:32

iPhone

2011-08-05 13:49:53

iPhone 應用 開發

2011-07-06 16:25:10

iPhone 程序 調用

2011-07-26 16:33:56

iPhone Delegate

2011-07-28 13:59:40

iPhone App

2012-05-24 15:49:35

HTML5

2011-08-10 09:31:33

開發iPhone應用程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美激情在线精品一区二区三区 | 亚洲综合区 | 国产一级特黄视频 | 日本大香伊一区二区三区 | 久久最新精品 | 欧美日韩精品久久久免费观看 | 色接久久| 国产精品视频一二三区 | 亚洲精品欧美 | 久在线观看 | 精品国产伦一区二区三区观看方式 | 成人精品国产 | 不卡的av电影| 国产综合精品一区二区三区 | 一级片在线观看 | 中文字幕一区二区三区在线观看 | 国产精品亚洲一区二区三区在线 | 一区二区三区高清 | 久久蜜桃av一区二区天堂 | 日本中文字幕在线视频 | 亚洲午夜精品 | 亚洲综合一区二区三区 | 久久88| 国产美女一区二区 | 亚洲精品视频一区 | 精品国产一区探花在线观看 | 日本在线小视频 | 综合精品在线 | 不卡视频一区 | 最新日韩在线视频 | 久久99精品久久久久婷婷 | 欧美毛片免费观看 | 99久久精品国产麻豆演员表 | 看一级黄色毛片 | 免费黄色网址视频 | 亚洲欧美自拍偷拍视频 | 成人国产精品 | 国产激情一区二区三区 | 国产精品99999 | 91久久国产综合久久91精品网站 | 欧美999|