四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

MonoTouch中的MVC簡(jiǎn)介

  在這篇文章中,我們將要?jiǎng)?chuàng)建另外一個(gè)簡(jiǎn)單的應(yīng)用程序,不過(guò)這次要學(xué)習(xí)下如何使用Views(視圖)和View Controllers(視圖控制器)來(lái)創(chuàng)建一個(gè)具有多個(gè)界面的應(yīng)用程序。特別地,我們將使用UINavigationController來(lái)在應(yīng)用程序里的兩個(gè)界面間進(jìn)行導(dǎo)航。

  在開始構(gòu)建應(yīng)用程序之前,讓我們簡(jiǎn)單熟悉下iPhone應(yīng)用程序所用的這個(gè)重要設(shè)計(jì)模式。

  模型-視圖-控制器(MVC)模式

  Cocoa Touch使用了一種修改版本的MVC模式來(lái)處理GUI的顯示。MVC模式(自1979年以來(lái))已經(jīng)出現(xiàn)很長(zhǎng)時(shí)間了,它皆在分離顯示用戶界面所需的大量任務(wù),并處理用戶交互。

正如名稱所蘊(yùn)含的,MVC具有三個(gè)主要部分,Model(模型)、View(視圖)和Controller(控制器):

  • 模型——模型是特定于領(lǐng)域的數(shù)據(jù)表現(xiàn)形式。比如說(shuō),我們正在創(chuàng)建一個(gè)任務(wù)列表應(yīng)用程序。你可能會(huì)有一個(gè)Task對(duì)象的集合,書寫為L(zhǎng)ist<Task>。你或許把這些數(shù)據(jù)保存在數(shù)據(jù)庫(kù)、XML文件,或者甚至從Web Service中得到,不過(guò)MVC不那么關(guān)心它們是在何處/如何來(lái)持久保存的(乃至它們是什么)。相反,它特別專注于如何顯示這些數(shù)據(jù),并處理與用戶交互的。
  • 視圖——視圖代表了數(shù)據(jù)如何實(shí)際地顯示出來(lái)。在我們這個(gè)假設(shè)的任務(wù)應(yīng)用程序中,會(huì)在一個(gè)網(wǎng)頁(yè)(以HTML的方式)中來(lái)顯示這些任務(wù),也會(huì)在一個(gè)WPF頁(yè)面中(以XAML的方式)來(lái)顯示,或者在一個(gè)iPhone應(yīng)用程序中顯示為UITableView 。如果用戶點(diǎn)擊某個(gè)任務(wù),要?jiǎng)h除之,那么視圖通常會(huì)觸發(fā)一個(gè)事件,或?qū)ontroller(控制器)進(jìn)行一個(gè)回調(diào)。
  • 控制器——控制器是模型和視圖間的粘合劑??刂破鞯哪康木褪谦@取模型中的數(shù)據(jù),告知視圖來(lái)顯示??刂破鬟€偵聽著視圖的事件,在用戶選中一個(gè)任務(wù)來(lái)刪除的時(shí)候,控制著任務(wù)從模型中刪除。

  通過(guò)分離顯示數(shù)據(jù)、持久化數(shù)據(jù)和處理用戶交互的職責(zé),MVC模式有助于創(chuàng)建易于理解的代碼。而且,它促進(jìn)了視圖和模型的解耦,以便模型能被重用。例如,在你的應(yīng)用程序中,有兩個(gè)界面,基于Web的和WPF的,那么你可以在兩者中都使用同樣的模型定義代碼。

  因而,在很多MVC框架中不管具體的工作方式如何,基本原理都大致如此的。然而,在Cocoa(及Cocoa Touch)中,還是或多或少有所不同,蘋果用MVC來(lái)代表Views(視圖)、View Controller(視圖控制器)和Models(模型);但是在不同的控件中,它們卻不是完全一致的,實(shí)現(xiàn)的方式也不太一樣。我們將在構(gòu)建示例應(yīng)用程序的時(shí)候了解更多細(xì)節(jié)。

  在MonoTouch中的視圖和視圖控制器

  我之前簡(jiǎn)短地提到,在iPhone應(yīng)用程序中,你只能顯示一個(gè)窗口。不過(guò)可以包含很多界面。要做到這點(diǎn),你需要為每個(gè)界面都添加一個(gè)視圖和視圖控制器。

  視圖實(shí)際上包含了所有可視化元素,比如標(biāo)簽、按鈕等等,而視圖控制器處理在視圖上的實(shí)際用戶交互(通過(guò)事件),并讓你在這些事件被觸發(fā)的時(shí)候運(yùn)行相應(yīng)的代碼。做一個(gè)粗略的比喻的話,這就是和ASP.NET或WPF有點(diǎn)類似的模型,在這些模型中,你通過(guò)HTML或XAML來(lái)定義用戶界面,在后置代碼中處理事件。

  在你導(dǎo)向另外一個(gè)頁(yè)面的時(shí)候,就把視圖控制器放到視圖控制器堆棧中。在這個(gè)要構(gòu)建的應(yīng)用程序中,我們將使用Navigation View Controller(導(dǎo)航視圖控制器,UINavigationController)來(lái)處理不同的界面,因?yàn)樗峁┝艘环N方式可以在界面之間非常容易地導(dǎo)航,通過(guò)這種基于層級(jí)模式的導(dǎo)航欄,讓你的用戶能夠藉由視圖控制器往后和往前進(jìn)行導(dǎo)航。

  UINavigationController 在很多內(nèi)置的iPhone應(yīng)用程序都能看到。例如,在查看短信列表的時(shí)候,如果你點(diǎn)擊其中一個(gè),頂部導(dǎo)航欄將在頂部顯示一個(gè)左箭頭按鈕,讓你可以回到顯示消息列表的視圖。

  具有多個(gè)界面的Hello World應(yīng)用

  現(xiàn)在,在概念上了解了MVC的工作原理后,讓我們實(shí)際地創(chuàng)建一個(gè)應(yīng)用程序來(lái)實(shí)踐下。

  首先,在MonoDevelop中新建一個(gè)MonoTouch iPhone解決方案,命名為Example_HelloWorld_2(如果你忘記如何操作可以參考一下第一篇文章)。

  接著,添加兩個(gè)視圖控制器(以及相關(guān)的視圖)來(lái)服務(wù)于我們將要執(zhí)行導(dǎo)航的應(yīng)用程序中的界面。要完成這個(gè)步驟,在項(xiàng)目上點(diǎn)擊右鍵,選擇“Add : New File”。

  在Interface Builder中打開.xib文件,添加一個(gè)標(biāo)簽到HelloWorldScreen上,修改文本為“Hello World”,另外添加一個(gè)文本到HelloUniverseScreen上,修改文本為“Hello Universe”,如下圖所示:

  現(xiàn)在,讓我們添加一個(gè)Navigation Controller到Main Window上。方式是,在Interface Builder里打開MainWindow.xib,從Library Window中拖一個(gè)Navigation Controller到Document Window上:

  Navigation Controller具有如下幾個(gè)部分:

  • Navigation Controller(導(dǎo)航控制器)——這是控制器的主要部分,處理導(dǎo)航事件,把所有東西糅合在一起。
  • Navigation Bar(導(dǎo)航欄)——這是顯示在頂部的工具條,讓用戶能夠看到它處于導(dǎo)航層級(jí)的什么位置,并可以導(dǎo)航回去。
  • 視圖控制器——這個(gè)部分用來(lái)控制著視圖的顯示。
  • Navigation Item(導(dǎo)航條目)—— 就是顯示在導(dǎo)航欄上的部分,實(shí)際上就是用于導(dǎo)航的按鈕,也顯示相應(yīng)的標(biāo)題

  接下來(lái),我們添加一個(gè)Table View到Navigation Controller上,以便能創(chuàng)建一個(gè)用于各個(gè)界面的鏈接列表。要完成這個(gè)步驟,從Library中拖一個(gè)UITableView到Navigation Controller里的View Controller上:

  改變一下導(dǎo)航欄的標(biāo)題。在Navigation Controller上雙擊頂部欄,鍵入“Hello World Home!”:

我必須使用Table View來(lái)包含Navigation Items嗎?

不用,你可以放任何東西到View Controller中。我們將在后面看到,在你導(dǎo)航到一個(gè)新界面的時(shí)候,你是調(diào)用NavigationController.PushViewController方法,并把要去的界面的View Controller傳遞給它。在用戶點(diǎn)擊按鈕的時(shí)候,我們能輕易地實(shí)現(xiàn)它。

  現(xiàn)在,我們獲得了所需的Navigation Controller以及相關(guān)的Table View,還需要讓兩者都可被后置代碼訪問(wèn)。需要讓Navigation Controller在代碼中可訪問(wèn),以便我們能把View Controllers傳給它;也需要讓Table View在代碼中可訪問(wèn),以便我們能用要導(dǎo)航到的界面的名稱來(lái)填充它。

  要實(shí)現(xiàn)這個(gè)步驟,要為它們創(chuàng)建Outlets,正如我們?cè)诘谝黄恼滤龅哪菢拥摹N覀儼袾avigation Controller取名為mainNavigationController,把Table View取名為mainNavTableView。要確保在AppDelegate中創(chuàng)建它們。在你完成后,Connection Inspector應(yīng)該看上去如下所示:

  接著,需要設(shè)置在應(yīng)用程序啟動(dòng)的時(shí)候顯示Navigation Controller。還記得之前在Main.cs中注釋掉的  Window.AddSubview代碼嗎?對(duì),這就是我們現(xiàn)在要使用的代碼。我們把那行代碼改為如下:

 If you have defined a view, add it here: 
window.AddSubview(
this.mainNavigationController.View);

NET技術(shù)MonoTouch中的MVC簡(jiǎn)介,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 幼儿园一日活动的组织与实施| 青春没有遗憾才完美辩论资料| 1998年槟榔西施| 离歌吉他谱| 我们爱你| 张寿懿| 美女xxx69爽爽免费观妞| 慕思成| 守株待兔的老农夫音乐教案| 小城故事多歌曲原唱| 四川地图旅游地图高清版大图| 成龙游戏| 浙江卫视回放观看入口| 全国精神病查询系统官网| 黑暗圣经在线观看| 斯科| 王音棋的个人简历| free xxxx japan| 香魂女| 肢体的诱惑电影| 康熙微服第二部免费版第24集| 奇妙的植物世界阅读短文答案| 米莎巴顿| 乔治克鲁尼身高| 快乐宝贝电影免费观看| 电影《来的都是客》| 五年级下册第九课古诗三首课堂笔记| 5g影院| 大奉打更人电视剧免费在线观看| lebron james音标| 尸语者 电视剧| 洛嘉| 新民歌| 韩秀云讲经济| 胃疼呕吐视频实拍| 让我听懂你的语言歌词| 赵凯的个人资料| 杨贵妃1992版电影完整| 女娲怀孕生孩子视频| 潜行在线观看| 梦的衣裳|