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测试一下。即使是该方法没有具体实现,但是你在滑动行时已经可以看到删除按钮了。