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