Cocoa 程式設計/入門
本模組將引導您完成建立第一個 Cocoa 應用程式的過程。
本模組旨在幫助您熟悉將要使用的工具的基礎知識,不會詳細介紹它們。
您將要編寫的應用程式將透過圖形使用者介面接收使用者輸入的兩個數字,並將它們相乘。這兩個數字的乘積將傳送到圖形使用者介面。
您需要做的第一件事是啟動 Xcode。Xcode 應該位於 /Developer/Applications(硬碟驅動器上的 Developer 資料夾中的 Applications 資料夾)。我們將在接下來的模組中大量使用 Xcode,所以您現在可能希望將其新增到 Dock 中。
雙擊 Xcode 圖示啟動它。
Xcode 啟動後,您就可以建立專案了。
從檔案選單中選擇“新建專案”。將出現以下對話方塊。
選擇“Cocoa 應用程式”,然後單擊“下一步”。將出現一個對話方塊,要求您命名專案。
將專案命名為“Multiply”,然後單擊“完成”。Xcode 將建立您的專案併為您設定一些初始檔案。完成後,應該會顯示以下視窗,我們就可以開始了。
由於您的應用程式非常簡單,您可以直接構建使用者介面!單擊“NIB 檔案”旁邊的箭頭,然後雙擊“MainMenu.nib”。這將啟動 Interface Builder,這是一個有用的程式,您可以使用它來組裝圖形使用者介面。Interface Builder 啟動後,您的螢幕上將顯示類似於以下視窗。如果視窗看起來略有不同或位置不同,請不要擔心。

您的介面首先需要一種方法讓使用者輸入要相乘的兩個數字。基本的文字框適合此目的。單擊介面元素調色盤的“Cocoa-Text”選項卡。從該選項卡中,您應該將一個基本的文字框拖動到應用程式視窗中。拖動介面元素時,有時會出現虛線藍色線條。這些線條可幫助您根據 Apple 人機互動指南定位元素。將文字框放置在視窗的左上角附近,如下一張圖所示。
第一個文字框放置到位後,您應該新增另一個文字框來儲存使用者將要輸入的第二個數字,以及第三個文字框來儲存乘積。您的視窗應該看起來像這樣。
現在,您的視窗沒有任何內容來向用戶解釋它的作用!它需要一些標籤。從介面元素調色盤中將一個標籤拖動到應用程式視窗中(標籤元素是寫著“系統字型文字”的那個)。將其放在視窗中後,雙擊它並將其更改為“x”,將其右邊界拖到最左邊,並將其放置在頭兩個文字框之間。建立另一個標籤,寫著“=”,並將其放置在最後兩個文字框之間。您的應用程式現在應該看起來像這樣。
現在,您的應用程式需要一種方法來啟用乘法運算。選擇介面元素調色盤的“Cocoa-Controls”選項卡,並將一個按鈕拖動到應用程式視窗中。將其放置在右側文字框下方。雙擊按鈕並將其文字更改為“計算”。由於這是我們要新增到介面中的最後一項,您可能還想調整視窗大小,使其沒有太多多餘的空間。您的視窗現在應該看起來像這樣。
但是這些專案是如何協同工作的呢?目前,文字框和按鈕沒有任何連線。我們將它們連線到一個控制器物件,我們現在將建立它。單擊“MainMenu.nib”視窗的“類”選項卡,然後選擇“NSObject”(它在最左邊)。選擇 NSObject 後,從“類”選單中選擇“子類化 NSObject”。
將新類命名為“MultiplyController”。選中新建立的 MultiplyController 後,從“類”選單中選擇“例項化 MultiplyController”。這將建立一個類例項,我們可以將介面元素連線到它。
現在,當您檢視“MainMenu.nib”視窗的“例項”選項卡時,您將看到 MultiplyController 類例項。在我們能夠將介面元素連線到控制器之前,我們必須為控制器提供出口和操作。出口是與介面元素的連線,例如文字框,操作是可以由介面元素呼叫的方法,例如按下按鈕時。
單擊“類”選項卡中的“MultiplyController”,然後從“工具”選單中選擇“顯示資訊”(如果您執行的是 Tiger,則選擇“顯示檢查器”。單擊資訊視窗的“出口”選項卡,然後單擊“新增”。將新出口命名為“firstNumber”。新增另外兩個名為“secondNumber”和“product”的出口。
在“操作”選項卡中,單擊“新增”,並將新操作命名為“Multiply”。
現在您需要將所有部分連線起來。為此,您需要單擊“MainMenu.nib”視窗的“例項”選項卡。然後按住鍵盤上的 Control 鍵,從“MultiplyController”的例項拖動到應用程式視窗中的第一個文字框。將出現一條藍色線條,顯示您正在建立的連線。到達第一個文字框後,停止拖動,資訊視窗將顯示您要連線的可能出口。選擇“firstNumber”,然後單擊“連線”。螢幕截圖顯示連線建立後的情況,因此檢查器視窗中的按鈕現在顯示“斷開連線”,並且 firstNumber 出口旁邊有一個球體,表示它是左側插圖中顯示的連線的目標。
對“secondNumber”出口和第二個文字框執行相同的操作。最後,將右側文字框連線到“product”出口。現在我們需要將“計算”按鈕連線到 MultiplyController 的乘法操作。這也是透過 Control+拖動來完成的,但這次您從按鈕開始,拖動到類例項。這是因為將執行乘法的訊息需要從按鈕流向控制器。
現在您已經連線了操作和出口,您可以在 Interface Builder 中儲存您的工作。但是,在退出 Interface Builder 之前,您應該再做一件事。在“Main Menu.nib”視窗的“類”選項卡中,選擇“MultiplyController”,然後從“類”選單中選擇“為 MultiplyController 建立檔案”。
在出現的表中,確保選中“MultiplyController.h”和“MultiplyController.m”,然後單擊“選擇”。
然後,您可以儲存您所做的任何更改並退出 Interface Builder。
現在介面已完成,您可以編寫 MultiplyController 類的程式碼。確保已選中 Xcode,然後單擊“其他源”。現在將顯示應用程式的原始碼,位於右側。雙擊“MultiplyController.m”以開啟它進行編輯。
當前它的內容為
#import "MultiplyController.h"
@implementation MultiplyController
- (IBAction)multiply:(id)sender
{
}
@end
如果您不理解這一點,您可能需要閱讀程式設計:Objective-C。
我們需要的是讓“multiply:”方法獲取兩個數字,將它們相乘,並將乘積放在結果文字框中。為此,將方法更改為以下內容。
- (IBAction)multiply:(id)sender
{
[product setIntValue:[firstNumber intValue] * [secondNumber intValue]];
}
如果您理解 Objective-C,這應該對您有意義。如果不理解,您應該閱讀程式設計:Objective-C。
儲存“MultiplyController.m”並關閉它。從“構建”選單中選擇“構建並執行”。假設您沒有犯任何錯誤,應用程式應該會執行。輸入一些數字並按計算。
- 目前,乘法應用程式使用整數。修改程式碼,使其可以使用浮點數。
- 修改介面,使應用程式在您更改其中一個文字框的內容時更新。















