iPhone應用程序 Say Hello實例操作 (上篇)
iPhone應用程序 Say Hello實例操作是本文要介紹的內容,整個實例操作過程分為三個章節為友們介紹,本節主要介紹了需求分析,模型、視圖、 控制器的等一些內容,我們先來看詳細內容。
項目需求
寫一個iPhone應用程序,要求可以輸入名字,點擊按鈕后,會顯示一段文字向輸入的名字打招呼,例如輸入“寶玉”,顯示“你好,寶玉!”
需求分析
這是一個很簡單的應用程序,包含一個文本輸入框,一個文本顯示框,一個按鈕。輸入名字到文本輸入框,再點擊按鈕,這時文本顯示框的文字就會變成“你好,<名字>!”。但是要注意,如果用戶輸入為空,要有警告提示用戶重新輸入;如果用戶輸入文字太長,超過16個字符,要自動截斷。
產品設計
根據項目需求,畫出相應的產品原型圖:
初始狀態
初始時,文本輸入框為空,但是顯示水印,提醒用戶可以輸入姓名。文本顯示框文字為空。
輸入名字并點擊按鈕后
輸入名字,并點擊按鈕后,屏幕中間顯示文字:“您好,<名字>!”。
沒有輸入名字的警告提示
如果沒有輸入名字,點擊按鈕后彈出警告窗口,提醒用戶輸入名字。
系統分析
這是一個非常簡單的應用程序,實現思路不不算復雜:
一個文本輸入框,用來輸入文字,需要限制***字符長度為16個字符,輸入框沒有內容時,顯示水印文字。UITextField控件正好可以滿足需求。
一個文本顯示框,用來顯示最終生成的文字。使用UILabel控件即可滿足需求。
一個按鈕,點擊后,獲取文本輸入框文字內容,生成“你好,<名字>!”文字,并顯示在文本顯示框中。如果點擊時文本輸入框文字為空,彈出警告提示框。
同時,這個應用程序在開發過程中,需要應用到iPhone開發中一些常用的設計模式:
委托(Delegate)
模型 視圖 控制器(MVC)
目標 - 動作(Target-Action)
委托(Delegate)
委托模式是一個對象周期性地向被指定為其委托的另一個對象發送消息,向其請求輸入或者通知某件事情正在發生。該模式可替換類繼承來對可復用對象的功能進行擴展。
在本項目中,應用程序對象會向其委托發送消息,通知它主要的啟動例程已經完成并且定制的配置可開始執行。為了建立并管理視圖,委托會創建一個控制器實例。另外,當用戶點擊Return按鍵后,文本字段也會通知它的委托(即所創建的控制器對象)
委托方法通常會集中在一起形成一份協議。 一份協議基本上就是一個方法的列表。如果一個類遵循某個協議,則它要保證實現協議所要求的方法(有些方法可選擇實現與否)。委托協議規定了一個對象可以發送給委托的所有消息。例如常見的有:UITextFieldDelegate, UIApplicationDelegate, UIScrollViewDelegate, UITableViewDelegate, UIWebViewDelegate。
模型 視圖 控制器(MVC)
MVC模式將應用程序中的對象設定為三種角色:模型角色(Model)、視圖角色(View)和控制器角色(Controller)。
模型對象(Model)表示數據。例如,在iPhone自帶的通訊錄應用中,聯系人是模型對象,在一個繪畫應用中,圓形、矩形是模型對象。
本項目的應用程序用到的數據非常簡單——字符串,并且該字符串只有在按鈕點擊的方法中用到。其實換一種角度來說,字符串也是一種最簡單的模型對象,在其他的應用程序中,模型對象將會更加復雜,并且模型對象在程序中無處不在,可以在多個地方進行訪問。
視圖對象(View)負責顯示數據,比如UILabel可以顯示文本、UIImageView可以顯示圖片,也會支持用戶對數據的編輯操作,例如UITextField可以支持用戶輸入。
在我們接下來要創建的項目中,需要一個主視圖來包含其它幾個視圖——首先是一個文本輸入框,它用于捕獲用戶輸入信息;然后是一個文本顯示框,它用于顯示文本,而文本內容則是基于用戶的輸入;另外還需要一個按鍵,讓用戶可以點擊它,點擊后通知文本字段更新。
控制器對象(Controller)介于模型和視圖之間。
在我們接下來要創建的項目中,當用戶點擊按鈕后,觸發更新操作,控制器對象將會從文本輸入框中獲取輸入的文字內容,并把文字存放在一個字符串中,然后再把文本顯示框的內容更新成格式化好的內容。
結合MVC模式,對于本項目的主要流程,整個如圖所示:
目標 - 動作(Target - Action)
目標-動作機制,允許一個控件對象(例如按鍵或滑動條) 向另外一個對象發送一條消息(即動作),以之作為對某個用戶事件(例如一個點擊事件)的響應。接收到消息的對象則可以對消息進行響應,并針對業務要求做出處理。
在本項目中,當點擊按鈕時,它會通知控制器去獲取文本輸入框內容,并根據輸入內容更新文本顯示框。
開發
創建項目
我們將開始使用Xcode來創建項目,啟動Xcode(缺省情況下,Xcode位于 /Developer/Applications 里面),然后選擇File > New > New Project,這樣就可以創建一個新的工程。應該可以看到一個新的窗口,如下圖所示:
選中 Window-Based Application 并點擊 Next 按鈕,輸入Product Name(項目名):SayHello,在Company Identifier那,可以輸入公司名唯一標識。
點擊Next,選擇項目存儲位置,***點擊Create按鈕。
完成上述步驟后,將看到如下的新項目窗口:
在進行下一步工作之前,可以先編譯運行一下程序,這樣就可以通過模擬器看到程序運行后的樣子。在Xcode的菜單中選擇 Product > Run 或者點擊左上角工具欄上的 Run 按鈕,iPhone模擬器應該會自動啟動。當應用程序啟動后,可以看到一個白色屏幕。
應用程序啟動過程解析
通過Xcode的模板創建項目時,模板已經幫助設置好了應用程序基本程序環境,它會幫助創建一個應用程序對象,將應用程序和窗口連接起來,建立一個運行環境。整個啟動過程從UIApplicationMain函數開始,如下圖所示:
main.m文件中的main函數會調用UIApplicationMain函數:
- int retVal = UIApplicationMain(argc, argv, nil, nil);
該函數將會創建一個UIApplicaion類的實例。同時它會搜索應用程序的Info.plist屬性列表文件。 Info.plist文件是一部字典,它主要包含諸如應用程序名稱、圖標這樣的信息,它也包含應用程序對象應該加載的nib 文件(雖然該文件的擴展名為“xib”,但是我們習慣稱之為“nib 文件”)的名稱。Nib文件主要有用戶界面的信息。本項目的Info.plist文件具有下面的內容:
術語: 雖然Interface Builder文檔的擴展名可能是“.xib” ,但歷史上,其擴展名是“.nib”(“NextStep Interface Builder”的首字母縮寫),因此人們就俗稱其為“Nib文件”。
這表明應用程序啟動時將會加載MainWindow nib文件。在Xcode中可以單擊MainWindow.xib進行查看(注意在Xcode4中已經不需要通過Interface Builder來打開nib文件,可以直接在Xcode對nib文件進行查看和編輯):
MainWindow Nib文檔包含4個對象:
File's Owner,文件擁有者代理對象,在這里MainWindow的擁有者對象時UIApplication實例
First Responder,***響應者代理對象,在本項目中,沒有使用到
Say Hello App Delegate,SayHelloAppDelegate的實例,也就是應用程序的委托
Window,一個窗口對象。它默認是白色背景,程序啟動時看到的就是它
應用程序對象在完成啟動后,會向委托發送applicationDidFinishLaunching:消息,通知程序已經啟動成功了,這樣我們可以在收到這個消息后根據需要進行一些操作。下圖是一個簡化的iPhone應用程序生命周期圖,簡要展示了發生在應用程序啟動到退出的過程。
這樣,我們基本了解了如何創建一個項目,以及一個應用程序的啟動過程,接下來,我們需要創建一個視圖控制器(UIViewController)實例,用來實現項目功能。
小結:關于iPhone應用程序 Say Hello實例操作 (上篇)的內容介紹完了,希望本文對你有所幫助,請繼續閱讀 iPhone應用程序 Say Hello實例操作 (中篇)