第九章 刪除表格行,定制Action按鈕,MVC模式(一)

IOS 8編程入門--使用swift語(yǔ)言 專題目錄:

IOS 8 開發(fā)入門--序言(一)

IOS 8 開發(fā)入門--序言(二)

第一章:創(chuàng)建你的第一個(gè)App(一)

第一章:創(chuàng)建你的第一個(gè)App(二)

第二章:使用Storyboard設(shè)計(jì)用戶界面(一)

第二章:使用Storyboard設(shè)計(jì)用戶界面(二)

...............

第七章? 使用prototype Cell定制Table View(一)

第七章? 使用prototype Cell定制Table View(二)

第八章 表格單元格選取以及UIAlertController(一)

全書完整目錄

首先簡(jiǎn)單說(shuō)一下Model-View-Controller

現(xiàn)在你已經(jīng)知道如何處理表格行選中了。但是如何刪除呢?我們?nèi)绾螐腢ITableView刪除行呢?這是在創(chuàng)建基于表格的App時(shí)經(jīng)常提出的問題。選擇,刪除,插入和更新是處理數(shù)據(jù)的基本操作。我們已經(jīng)討論過選擇了。這一章我們討論刪除。另外,我們還會(huì)學(xué)到如何在用戶水平滑動(dòng)表格行時(shí)增加一個(gè)操作按鈕

但是在進(jìn)入編碼部分之前,我準(zhǔn)備為大家介紹Model-View-Controller(MVC)模型,這是在用戶界面編程中用的最多的設(shè)計(jì)模型。我盡力讓這本書以實(shí)戰(zhàn)為主,極少討論編程理論。但是,如果你想創(chuàng)建偉大的App或者成為合格的程序猿的話,你不可避免要學(xué)習(xí)Model-View-Controller。

MVC并不是IOS編程獨(dú)有的。如果你學(xué)過其他編程語(yǔ)言如Java或者Ruby的話你肯定也聽說(shuō)過。這是一個(gè)非常有力的設(shè)計(jì)模式,可以用來(lái)設(shè)計(jì)各種各樣的移動(dòng)應(yīng)用或者web APP

理解MVC模式

無(wú)論你學(xué)習(xí)哪種編程語(yǔ)言,分離的概念都能讓你變成更好的程序員。這個(gè)概念非常簡(jiǎn)單。分離的概念鼓勵(lì)開發(fā)人員拆分大的功能或者將其拆分成不同的片段,每一個(gè)代碼片段負(fù)責(zé)各自的功能。我們?cè)谇懊嬲鹿?jié)中介紹的在IOS編程中廣泛用到的代理模式就使用了分離的概念。

這里模型-視圖-控制器(MVC)模式是另外一種分離的例子。MVC的核心思想是將用戶界面分離成三個(gè)部分,每個(gè)部分負(fù)責(zé)不同的功能。正如MVC名字所暗示的,它將用戶界面分為三部分:

模型—模型負(fù)責(zé)存儲(chǔ)數(shù)據(jù)及對(duì)數(shù)據(jù)的操作。最簡(jiǎn)單的模型可以是一個(gè)存儲(chǔ)表格數(shù)據(jù)的數(shù)組。增加,更新,刪除是這些數(shù)據(jù)的操作。在商業(yè)實(shí)踐,這些操作通常被稱為商業(yè)規(guī)則。

視圖—視圖負(fù)責(zé)管理信息顯示。例如,UITableView用列的形式顯示信息。UIButton出現(xiàn)在屏幕上是另一個(gè)例子。

控制器—控制器是模型和視圖之間的橋梁。它將用戶作用于視圖上的交互動(dòng)作翻譯為模型上的操作。例如用戶點(diǎn)擊界面上的刪除按鈕。結(jié)果,控制器觸發(fā)了模型中的一個(gè)刪除操作。一旦完成這些操作,模型需要視圖刷新自己,這樣就能反應(yīng)數(shù)據(jù)模型的更新結(jié)果了。

為了讓你更好的了解MVC,讓我們用前面章節(jié)的Simple Table App作為例子。這個(gè)APP在表格中顯示了一系列餐館。如果你用可視化的形式展現(xiàn)出來(lái),下圖說(shuō)明了表格數(shù)據(jù)如何被顯示。


存放餐館名的數(shù)組對(duì)象就是模型。每一個(gè)表格的行映射一個(gè)餐館名數(shù)組中的元素。UITableView對(duì)象是一個(gè)真實(shí)的視圖,可以被用戶看到。它負(fù)責(zé)所有的顯示部分??刂破靼缪萘吮砀褚晥D和數(shù)據(jù)模型之間的橋梁。它管理表格視圖并且負(fù)責(zé)從模型中加載數(shù)據(jù)

從UITableView中刪除行

我希望你現(xiàn)在對(duì)模型-視圖-控制器有了更好的理解。讓我們轉(zhuǎn)移到代碼部分,看看如何從表格中刪除行。我們將會(huì)繼續(xù)開發(fā)FoodPin app(如果你還沒有完成這個(gè)項(xiàng)目,請(qǐng)回到前面的章節(jié)找到下載鏈接下載)并且添加刪除功能。

如果你理解了MVC模型,你可能對(duì)實(shí)現(xiàn)行刪除功能有自己的思路。這里我們有3個(gè)主要的工作需要做:

1 使能表格的“滑動(dòng)刪除”功能,這樣才能刪除行

2 從數(shù)據(jù)模型中刪除合適的表格數(shù)據(jù)

3 重新加載表格來(lái)反應(yīng)表格數(shù)據(jù)的變化

使能滑動(dòng)刪除功能

在IOS?app中,用戶通常水平滑動(dòng)表格來(lái)顯示刪除按鈕。這需要我們實(shí)現(xiàn)UITableViewDataSource協(xié)議,該協(xié)議中有一個(gè)tableView(_:commitEditingStyle:forRowAtIndexPath:)方法。要使能表格的滑動(dòng)刪除功能你需要實(shí)現(xiàn)該方法。如果該方法存在,表格將會(huì)自動(dòng)顯示刪除按鈕。

在RestaurantTableViewController.swift中簡(jiǎn)單添加下面的代碼

快速運(yùn)行App測(cè)試一下。即使是該方法沒有具體實(shí)現(xiàn),但是你在滑動(dòng)行時(shí)已經(jīng)可以看到刪除按鈕了。




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容