Cocoa Touch視頻圖文教程:iOS應用程序實例
譯者注:在譯文中譯者修正了一些原文中錯誤的語句和圖片。若發(fā)現(xiàn)任何翻譯錯誤,歡迎在文末留言。
譯者將在這里向iPhone/iPod Touch的初級開發(fā)者介紹如何用Xcode 3.1中的界面構造器(Interface Builder)和應用程序委任器(application delegate)創(chuàng)建一個最簡單的Cocoa Touch應用程序。本篇教程旨在讓入門者快速上手。我不想深入探究那些背后的運行機制,只想幫助你快速搭建并運行***個應用程序,這樣你就也可以用那些 “無用”的應用程序塞滿App Store了。如果你是一個視覺學習者(visual learner),或許通過觀看視頻教程比讀這篇文章會對你更有幫助。原文視頻請點擊大圖
如果你知道MVC(Model-模型、View-視圖、Controller-控制器),那理解Cocoa編程就會容易得多。當然,如果你不知道MVC,也可以通過代碼實例一步一步做下來,但是我不建議這樣。還是先去谷歌一下,了解了解為宜。
我想對那些不了解MVC的朋友簡單介紹一下它,MVC被稱為(Model <–> Controller <–> View)或者(View <–> Controller <–> Model),其中的控制器(Controller)通常位于另外兩項的后方??刂破饔糜诟嬖V模型(Model)要”更新數(shù)據了“或者通知視圖(View)要”更新顯示了”。這便是整個模式的關鍵點。我只是用通俗的語言為你闡述了一下,至于背后的細節(jié)要復雜的多。
創(chuàng)建你的應用程序
讓我們開始吧!創(chuàng)建一個Cocoa應用程序需要以下幾個步驟:
選擇 File (文件)> New Project…(新的項目…),在 iPhone OS 模板下,選擇 Window-Based Application (基于窗口的應用), 點擊 Choose…(選擇…)

把項目名稱設為“Basic iPhone App”。點擊 Save(保存)。
你應當看到如下的項目工作空間(project workspace):

下一步你要做的是創(chuàng)建類,并把它作為控制器(Controller)或者委任器(Delegate)。
委任器 == 控制器
“委任器”和“控制器”這兩個詞是等價的。稍后你將看到我們會把在“界面構造器”中創(chuàng)建的不同方法委派給委任類或控制類。在iPhone模板項目中,應用程序的委任器就是為你而創(chuàng)建的。我們程序的委任器被稱為Basic_iPhone_AppAppDelegate 。
在程序的委任類中,我們需要添加Cocoa開發(fā)者想關聯(lián)的出口(Outlet)和行為(Action)。我能用一整篇文章來深入的對它們進行講解,但限于本文的篇幅,并為了帶你經歷創(chuàng)建***個應用程序的全過程,了解一下它們的概念就足夠了。
出口(Outlet)作為用戶界面的控制組件(Control),常會被賦予一些行為(Action)。行為即指代碼中的函數(shù),他們與用戶界面中的控制組件(例如,按鈕或下拉列表)相連。如果連接到一個按鈕,當用戶點擊這個按鈕的時候,就會觸發(fā)此行為。
在 xcode 中,打開委任器頭部文件 Basic_iPhone_AppAppDelegate.h ,在視窗出口(window outlet)下為你的文本域(Text Field)和標簽(Label)添加出口,代碼如下:
- @interface Basic_iPhone_AppAppDelegate : NSObject {
- IBOutlet UIWindow *window;
- IBOutlet UITextField *textField;
- IBOutlet UILabel *label;
- }
你還想為按鈕的點擊添加一個行為。需要為我們視窗添加如下屬性:
- @interface Basic_iPhone_AppAppDelegate : NSObject {
- IBOutlet UIWindow *window;
- IBOutlet UITextField *textField;
- IBOutlet UILabel *label;
- }
- @property (nonatomic, retain) UIWindow *window;
- - (IBAction)click:(id)sender;
現(xiàn)在打開執(zhí)行文件 Basic_iPhone_AppAppDelegate.m 。在 applicationDidFinishLaunching: 函數(shù)下添加 click:(點擊)行為:
- - (void)applicationDidFinishLaunching:(UIApplication *)application {
- // Override point for customization after app launch
- [window makeKeyAndVisible];
- }
- - (IBAction)click:(id)sender;
- {
- }
我們會在 click: 行為處理器中添加一些代碼,但是首先我們要通過界面構造器把它與用戶界面關聯(lián)起來。
界面構造器和控制器/委任器的實施
現(xiàn)在我們定義了幾個出口:一個 UITextField、一個 UILabel 和一個名為 click: 的行為,稍后你將看到這幾項都會與界面構造器中的UI連接上。要想打開界面構造器并設置連接,需要做以下幾步:
在xcode的工作空間中,展開左側目錄樹中名為 Resources(資源)的文件夾,雙擊名為“MainWindow.xib”的文件。
注意:.xib 就是 .nib ,它用XML記錄內部數(shù)據結構。
然后將會在界面構造器中打開這個 xib 文件。
一旦打開了界面構造器,你會在 MainWindow.xib 窗口中看到一個代表了程序委任的對象。我們將用它來連接行為和出口。

設計用戶界面
現(xiàn)在你能夠很容易的在界面構造器中的主窗口上添加控制組件,然后再相應的對 action 和 outlet 進行連接。為了搞定這一步,需要做以下幾項工作:
把 TextField(文本域)、Label (標簽)和 Button (按鈕)拖拽到主窗口上,如下圖所示:

按住 Control-Click,把按鈕拖到 “MainWindow.xib” 窗口的委任對象上

會顯示一個彈出窗口,選擇 click: 。
按住 Control-Click,把程序的委任對象拖拽到主窗口的文本域上。

同樣會顯示一個彈出窗口,選擇 textField 。
同上,按住 Control-Click,把程序的委任對象拖拽到主窗口的標簽上,也會顯示一個彈出窗口,選擇 label 。
界面構造器的工作完成了。關掉它,返回到xcode。我們只需再添加一段代碼,應用程序就完工了。
完工
當按鈕被點擊時,將讀取文本域中的文本,并把它顯示標簽上。這就是我們的應用程序要實現(xiàn)的功能。下面是你需要添加的代碼。只要把它放在在 Basic_iPhone_AppAppDelegate.m 中的 click: 行為中即可:
- - (IBAction)click:(id)sender;
- {
- [label setText:[textField text]];
- }
我們從文本域提取出其中的文本,并讓它顯示在標簽上?,F(xiàn)在你所要做的就是點擊 “Build and Go” (編譯并運行)。然后應用程序會運行 iPhone Simulator (iPhone模擬器),你會看到程序運行的效果。

在文本域中敲入一些文字,點擊 Change 。你會看到標簽上的文字與文本域中一樣了。

結論
iPhone開發(fā)中的局限只有一個──你的想象力。這是一個充滿樂趣的開發(fā)平臺,開發(fā)出的程序會為你帶來很多的回報。享受它吧,盡可能多的去了解它。幫我一個忙,在你做出“有用”的程序前,請不要再把那些“無用”的程序(例如手電筒程序,小費計算器等等)放在App Store上了。