iOS中的表视图—入门指南(第1部分)

不要害怕我!

我曾经以为创建一个简单的待办事项列表应用程序并不难,我的意思是它只是存储数据的一个表,对吗? 我打开了一本初学者的指南书,一脸茫然,编写一个待办事项列表应用程序本身就是一门艺术,需要深入了解对象之间如何进行通信(协议,委托等)。

如果您拥有iPhone,表视图几乎随处可见,它们都在您的联系人,音乐选择菜单,相册中,您可以为其命名。 因此,对于初学者来说,掌握这项技能非常重要,并且从中获得的所有知识都可以转移到其他类型的应用程序开发中

在本指南中,我将在最顶层讨论UITableView,然后逐步研究代码。 我相信您需要先了解整体情况才能驯服这头野兽。

模型-视图-控制器模型

天啊! 再没有关于MVC的另一篇文章! 但是,请允许我,您需要真正地掌握这种野兽之前,模型,视图和控制器层如何相互通信。

您会看到,MVC之所以成为如此杰出的软件体系结构模式的原因在于,它促进了代码的可重用性和关注点分离的概念

像这样想,控制器是模型和视图之间的中间人。 您作为控制器的目标是在视图层中可视化地映射或表示模型,而视图层无需确认模型层。 本节的重要内容是控制器直接在视图和模型之间进行通信,您可以在此处的其他博客中了解有关MVC的更多信息。

UITableViewDatasource和UITableViewDelegate

当我刚开始时,我一直想知道类声明行中的内容到底是什么,但是它们什么,为什么我们需要它以及它在做什么。

好了,为了解释这一点,我想先告诉你一个故事,这个故事将所有内容联系在一起并相信我,它将使事情变得更加清晰。 现在,让我们暂时忽略代码,在最后一节中将其全部介绍。

想想UITableView是一个被称为“ Tim”的人。 现在,蒂姆是个非常懒惰的人,他不喜欢做任何工作,他需要把一切交给他来完成工作,而这项工作是在列表,表格视图中显示数据。 值得庆幸的是,Tim有特殊的帮助,可以帮助您(控制器)了解并获得Tim完成工作所需的数据(符合UITableViewDatasourceUITableViewDelegate协议)。

数据源和委托专门处理不同的事物,它们的作用是赋予Tim功能,显示数据并与最终用户进行交互的作用。

蒂姆的助手

在继续之前,让我们讨论更多有关Tim的助手的信息,数据源负责向Tim报告有关数据的信息,这样的信息将需要显示多少项? 项目应如何显示? 应该有几节? 只是有关数据的所有内容,而没有别的。 因此,您实际上并不需要委托,因为如果您只想在表视图上显示信息,则只需要数据源。

但是,代表呢? 还记得数据源负责数据方面吗? 好的,委托负责管理用户的操作和表视图的“感觉”。 代表回答了一个问题:“如果用户触摸一行,该怎么办?”,“一旦显示数据,该怎么办?”它是一个帮助您向用户发出信号的用户,该用户对表视图进行了操作并使用协议中定义的方法。

带回来!

委托助手的作用实际上与MVC的基本结构息息相关,从而赋予了代理其生活目标。 您会看到,iOS中的视图(表视图是UIView的子类)应该并且应该仅显示数据,没有其他内容,显示期间。

但是,如果视图要回传给控制器怎么办? 为什么视图要这样做,您可能会问? 好吧,以您的iPhone上的设置菜单为例,这可以通过UITableView并且由于我们的助手UITableViewDatasource ,每一行UITableView正确填充(那里是舌头扭曲器)。 当您点击这些行时,它会通过告知您“用户已经点击了其中一个行,您想做什么?”而进入了另一个UITableView ,这要归功于UITableViewDelegate

要记住的一件事很重要,就是您知道协议中的所有这些方法? 您无需自己调用它们,只需简单地遵循它,系统便会在适当的时候调用它们,例如func tableView(UITableView, didSelectRowAt: IndexPath)当用户在列表中的某行上点击时,将调用func tableView(UITableView, didSelectRowAt: IndexPath)方法。表格视图。 同样,您不会调用协议方法,系统会调用。

结论

感谢您的阅读,希望您能从中学到一些东西。 当我深入探讨该主题并演示Xcode中的概念时,请继续关注第二部分。

如果您感到困惑,请发表评论,并关注我,以获取有关即将到来的迅速相关博客的通知!

谢谢