
IOS 8編程入門--使用swift語言 專題目錄:
第二章:使用Storyboard設(shè)計用戶界面(一)
第二章:使用Storyboard設(shè)計用戶界面(二)
...............
第七章? 使用prototype Cell定制Table View(一)
第七章? 使用prototype Cell定制Table View(二)
第八章 表格單元格選取以及UIAlertController(一)
首先簡單說一下Model-View-Controller
現(xiàn)在你已經(jīng)知道如何處理表格行選中了。但是如何刪除呢?我們?nèi)绾螐腢ITableView刪除行呢?這是在創(chuàng)建基于表格的App時經(jīng)常提出的問題。選擇,刪除,插入和更新是處理數(shù)據(jù)的基本操作。我們已經(jīng)討論過選擇了。這一章我們討論刪除。另外,我們還會學(xué)到如何在用戶水平滑動表格行時增加一個操作按鈕
但是在進入編碼部分之前,我準(zhǔn)備為大家介紹Model-View-Controller(MVC)模型,這是在用戶界面編程中用的最多的設(shè)計模型。我盡力讓這本書以實戰(zhàn)為主,極少討論編程理論。但是,如果你想創(chuàng)建偉大的App或者成為合格的程序猿的話,你不可避免要學(xué)習(xí)Model-View-Controller。
MVC并不是IOS編程獨有的。如果你學(xué)過其他編程語言如Java或者Ruby的話你肯定也聽說過。這是一個非常有力的設(shè)計模式,可以用來設(shè)計各種各樣的移動應(yīng)用或者web APP
理解MVC模式
無論你學(xué)習(xí)哪種編程語言,分離的概念都能讓你變成更好的程序員。這個概念非常簡單。分離的概念鼓勵開發(fā)人員拆分大的功能或者將其拆分成不同的片段,每一個代碼片段負責(zé)各自的功能。我們在前面章節(jié)中介紹的在IOS編程中廣泛用到的代理模式就使用了分離的概念。
這里模型-視圖-控制器(MVC)模式是另外一種分離的例子。MVC的核心思想是將用戶界面分離成三個部分,每個部分負責(zé)不同的功能。正如MVC名字所暗示的,它將用戶界面分為三部分:
模型—模型負責(zé)存儲數(shù)據(jù)及對數(shù)據(jù)的操作。最簡單的模型可以是一個存儲表格數(shù)據(jù)的數(shù)組。增加,更新,刪除是這些數(shù)據(jù)的操作。在商業(yè)實踐,這些操作通常被稱為商業(yè)規(guī)則。
視圖—視圖負責(zé)管理信息顯示。例如,UITableView用列的形式顯示信息。UIButton出現(xiàn)在屏幕上是另一個例子。
控制器—控制器是模型和視圖之間的橋梁。它將用戶作用于視圖上的交互動作翻譯為模型上的操作。例如用戶點擊界面上的刪除按鈕。結(jié)果,控制器觸發(fā)了模型中的一個刪除操作。一旦完成這些操作,模型需要視圖刷新自己,這樣就能反應(yīng)數(shù)據(jù)模型的更新結(jié)果了。
為了讓你更好的了解MVC,讓我們用前面章節(jié)的Simple Table App作為例子。這個APP在表格中顯示了一系列餐館。如果你用可視化的形式展現(xiàn)出來,下圖說明了表格數(shù)據(jù)如何被顯示。

存放餐館名的數(shù)組對象就是模型。每一個表格的行映射一個餐館名數(shù)組中的元素。UITableView對象是一個真實的視圖,可以被用戶看到。它負責(zé)所有的顯示部分??刂破靼缪萘吮砀褚晥D和數(shù)據(jù)模型之間的橋梁。它管理表格視圖并且負責(zé)從模型中加載數(shù)據(jù)
從UITableView中刪除行
我希望你現(xiàn)在對模型-視圖-控制器有了更好的理解。讓我們轉(zhuǎn)移到代碼部分,看看如何從表格中刪除行。我們將會繼續(xù)開發(fā)FoodPin app(如果你還沒有完成這個項目,請回到前面的章節(jié)找到下載鏈接下載)并且添加刪除功能。
如果你理解了MVC模型,你可能對實現(xiàn)行刪除功能有自己的思路。這里我們有3個主要的工作需要做:
1 使能表格的“滑動刪除”功能,這樣才能刪除行
2 從數(shù)據(jù)模型中刪除合適的表格數(shù)據(jù)
3 重新加載表格來反應(yīng)表格數(shù)據(jù)的變化
使能滑動刪除功能
在IOS?app中,用戶通常水平滑動表格來顯示刪除按鈕。這需要我們實現(xiàn)UITableViewDataSource協(xié)議,該協(xié)議中有一個tableView(_:commitEditingStyle:forRowAtIndexPath:)方法。要使能表格的滑動刪除功能你需要實現(xiàn)該方法。如果該方法存在,表格將會自動顯示刪除按鈕。
在RestaurantTableViewController.swift中簡單添加下面的代碼

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