IOS 8編程入門--使用swift語言 專題目錄:
...............
第七章? 使用prototype Cell定制Table View(一)
第七章? 使用prototype Cell定制Table View(二)
第八章 表格單元格選取以及UIAlertController(一)
首先簡單說一下Model-View-Controller
現在你已經知道如何處理表格行選中了。但是如何刪除呢?我們如何從UITableView刪除行呢?這是在創建基于表格的App時經常提出的問題。選擇,刪除,插入和更新是處理數據的基本操作。我們已經討論過選擇了。這一章我們討論刪除。另外,我們還會學到如何在用戶水平滑動表格行時增加一個操作按鈕
但是在進入編碼部分之前,我準備為大家介紹Model-View-Controller(MVC)模型,這是在用戶界面編程中用的最多的設計模型。我盡力讓這本書以實戰為主,極少討論編程理論。但是,如果你想創建偉大的App或者成為合格的程序猿的話,你不可避免要學習Model-View-Controller。
MVC并不是IOS編程獨有的。如果你學過其他編程語言如Java或者Ruby的話你肯定也聽說過。這是一個非常有力的設計模式,可以用來設計各種各樣的移動應用或者web APP
理解MVC模式
無論你學習哪種編程語言,分離的概念都能讓你變成更好的程序員。這個概念非常簡單。分離的概念鼓勵開發人員拆分大的功能或者將其拆分成不同的片段,每一個代碼片段負責各自的功能。我們在前面章節中介紹的在IOS編程中廣泛用到的代理模式就使用了分離的概念。
這里模型-視圖-控制器(MVC)模式是另外一種分離的例子。MVC的核心思想是將用戶界面分離成三個部分,每個部分負責不同的功能。正如MVC名字所暗示的,它將用戶界面分為三部分:
模型—模型負責存儲數據及對數據的操作。最簡單的模型可以是一個存儲表格數據的數組。增加,更新,刪除是這些數據的操作。在商業實踐,這些操作通常被稱為商業規則。
視圖—視圖負責管理信息顯示。例如,UITableView用列的形式顯示信息。UIButton出現在屏幕上是另一個例子。
控制器—控制器是模型和視圖之間的橋梁。它將用戶作用于視圖上的交互動作翻譯為模型上的操作。例如用戶點擊界面上的刪除按鈕。結果,控制器觸發了模型中的一個刪除操作。一旦完成這些操作,模型需要視圖刷新自己,這樣就能反應數據模型的更新結果了。
為了讓你更好的了解MVC,讓我們用前面章節的Simple Table App作為例子。這個APP在表格中顯示了一系列餐館。如果你用可視化的形式展現出來,下圖說明了表格數據如何被顯示。
存放餐館名的數組對象就是模型。每一個表格的行映射一個餐館名數組中的元素。UITableView對象是一個真實的視圖,可以被用戶看到。它負責所有的顯示部分。控制器扮演了表格視圖和數據模型之間的橋梁。它管理表格視圖并且負責從模型中加載數據
從UITableView中刪除行
我希望你現在對模型-視圖-控制器有了更好的理解。讓我們轉移到代碼部分,看看如何從表格中刪除行。我們將會繼續開發FoodPin app(如果你還沒有完成這個項目,請回到前面的章節找到下載鏈接下載)并且添加刪除功能。
如果你理解了MVC模型,你可能對實現行刪除功能有自己的思路。這里我們有3個主要的工作需要做:
1 使能表格的“滑動刪除”功能,這樣才能刪除行
2 從數據模型中刪除合適的表格數據
3 重新加載表格來反應表格數據的變化
使能滑動刪除功能
在IOS?app中,用戶通常水平滑動表格來顯示刪除按鈕。這需要我們實現UITableViewDataSource協議,該協議中有一個tableView(_:commitEditingStyle:forRowAtIndexPath:)方法。要使能表格的滑動刪除功能你需要實現該方法。如果該方法存在,表格將會自動顯示刪除按鈕。
在RestaurantTableViewController.swift中簡單添加下面的代碼
快速運行App測試一下。即使是該方法沒有具體實現,但是你在滑動行時已經可以看到刪除按鈕了。