注意:以下内容为个人理解,如有错误请指正,不胜感激。
1、UITableView的基本原理
UITableView继承自UIScrollView,可以自动响应滚动事件,每一行对应一个UITableViewCell对象,每个cell都都可以自定义,当cell被显示时就会调用tableView:cellForRowAtIndexPath方法创建或获取一个cell;而不可视时,它又会被释放。
在ios中tableView有两种基本类型:plain和grouped,两者的样式不一样。plain类型的tableView可以当做所有的cell都在一个section中,而grouped类型的tableView会分成多个组,每一个组叫做section,包含若干个cell,所以在grouped类型的tableView中,需要通过section和row来确定一个cell,在iso中用一个NSIndexPath来标识一个cell。
geouped类型的tableView中,每个section都可以设置head,foot,cells;
优化UITableView请参考:
http://www.keakon.net/2011/08/03/%E4%BC%98%E5%8C%96UITableView%E6%80%A7%E8%83%BD
2、UITableView的基本使用
第一种方式是在一个nib文件中拖动创建一个tableView在程序中使用,该nib文件对应的controller应该实现两个委托UITableViewDelegate和UITableViewDataSource。然后在.m文件中必须实现两个方法:
tableView:cellForRowAtIndexPath //用来创建每一个tableViewCell
tableView:numberOfRowsInSection: //返回当前的section的行数,如果tableView类型是plain,默认就是一个section
第二中方式是在代码中创建tableView,这种方法不常使用。
3、dequeueReusableCellWithIdentifier的运行机制
从字面上理解是“离队的可重用的cell”,这些cell不在屏幕显示,但是还存在。
使用时要注意:
1、重取出来的cell是有可能已经捆绑过数据或者加过子视图的,所以,如果有必要,要清除数据(比如textlabel的text)和remove掉add过的子视图(使用tag)。
2、这样设计的目的是为了避免频繁的 alloc和delloc cell对象而已,没有多复杂。
3、设计的关键是实现cell和数据的完全分离
4、"一个屏幕显示的cell数量"是有限的,当屏幕滚动时候,就会调用方法获取新的cell,而老的cell会在屏幕外面就不显示了。显示新的cell时,如果有“相同类型”(identifier)的cell,就从队列拿一个出来,设置数据,显示出来
5、queue中cell的数量会自动控制,要注意的是queue里面存储的是cell的实例,不是“原型”。如果每个cell的结构完全相同,那没问题,就只用这一个标识符,但是如果各个cell结构不完全相同,有的有textfield,有的有button,有的有switch,那就不能互相重用了,只能每行用不同的标识符了,可以方便的利用(@"CMainCell%d", indexPath.row),保证不会重复,多组的再加上组号。那这还有必要这么做吗?还是需要的,因为当自己滚动隐藏,下次再显示出来的时候,还是可以重用的。标识符完全可以每次用一个新的,但为了最大限度的重用性,节省资源,才想了这么多办法。
6、值得一提的是,cell被重用时,它内部绘制的内容并不会被自动清除,因此你可能需要调用setNeedsDisplayInRect:或setNeedsDisplay方法。
相关推荐
在iOS开发中,UITableView是一种非常重要的视图组件,用于展示数据列表。当表格中的数据分为多个部分(sections)时,每个部分通常会有一个header视图,用来标识该部分的主题。然而,随着数据量的增大,如果对每个...
iOS 开发中 UITableView 的使用详解 UITableView 是 iOS 开发中最常用的控件之一,用于显示列表数据。它类似于 Android 中的 ListView,都是用于显示列表数据的控件。在 iOS 开发中,UITableView 是一个非常重要的...
在iOS开发中,UITableView是一种非常常见的控件,用于展示数据列表。当应用的需求涉及多种不同类型的cell时,"UItableView多cell实现"就成为一个关键点。这个话题主要探讨如何优雅地处理UITableView中显示多种不同...
在iOS开发中,`UITableView` 是一种常用的组件,用于展示列表型数据。当我们需要在一个`UITableView`中显示两列数据时,通常会涉及到布局、数据源处理和自定义单元格等技术。以下将详细讲解如何实现这个功能。 首先...
在iOS开发中,`UITableView` 是一个非常常用且强大的组件,用于展示列表数据。然而,在实际应用中,我们经常会遇到一个问题:当用户在`UITableView`中的输入框(如UITextField)中输入时,弹出的键盘可能会遮挡住...
在iOS开发中,UITableView是应用最广泛的一种控件,它被用来展示列表或者表格数据,类似于Android中的ListView。本教程将带你入门iPhone上的UITableView使用,通过一个简单的示例项目"**MyTableView**"来深入理解其...
在iOS开发中,UITableView是一种非常重要的组件,用于展示列表数据,通常用于实现类似通讯录、邮件列表等场景。而“可以左右滑动的UITableView”则是对原生UITableView功能的一种扩展,使得用户可以通过左右滑动...
在iOS开发中,UITableView是一种非常重要的控件,用于展示数据列表。这个“IOS iphone UITableView简单例子”是一个基础的教程,旨在帮助开发者理解如何在iPhone应用中实现UITableView的基本功能。在这个项目中,...
在iOS开发中,UITableView是一个非常重要的组件,用于展示列表数据,比如应用的设置菜单、联系人列表等。这个"UITableView2 Demo代码"很显然是一个示例项目,旨在演示如何实现UITableView的一些高级特性,包括缩进、...
在iOS开发中,UITableView是一种非常重要的视图组件,它用于展示列表数据,通常用于实现诸如联系人列表、新闻摘要等功能。本教程将详细介绍如何通过纯代码方式创建一个简单的UITableView,这对于初学者来说是一次很...
在Swift编程中,UITableView是一种非常重要的视图组件,用于展示列表数据。自定义UITableViewCell和管理数据的添加、删除以及刷新是开发iOS应用时常见的需求。接下来,我们将详细探讨如何在Swift中实现这些功能。 ...
UITableView是iOS开发中不可或缺的一部分,它是展示数据列表的首选控件。在iOS应用设计中,无论是展示联系人、邮件列表还是商品详情,UITableView都扮演着关键角色。本教程将深入探讨UITableView的简单使用,帮助...
在iOS开发中,UITableView是展示数据列表的一种常见控件,用户可以滚动浏览并进行交互。在实际应用中,我们经常需要实现对UITableView中的单元格(Cell)进行删除操作。本Demo代码着重展示了如何在UITableView中删除...
在iOS开发中,UITableView是一种常用的UI组件,用于展示列表数据。在进行自定义表视图操作时,我们可能需要对单元格(UITableViewCell)的编辑功能进行控制,比如隐藏默认的删除按钮或者更改其标题。本篇文章将深入...
在iOS开发中,UITableView是一种常用的UI组件,用于展示列表数据。`UITableView`的缩放和展开功能通常是通过自定义扩展来实现的,特别是在构建类似下拉菜单或树形结构的界面时。`UITableViewDropDown`的概念可能指的...
在iOS开发中,`UITableView` 是一个非常常用的组件,用于展示列表数据。有时,开发者可能需要将整个`UITableView`的内容截图并保存为一张长图片,例如为了分享或记录用户当前的状态。这个过程涉及到屏幕截图、滚动...
在iOS开发中,UITableView是一种常用的数据展示控件,用于创建列表或表格视图。当涉及到更复杂的层级结构,如三级菜单,我们需要巧妙地利用UITableView的特性来实现。在这个主题下,我们将深入探讨如何构建一个支持...
在iOS开发中,UITableView是一种非常重要的视图组件,用于展示数据列表。本教程将深入讲解如何在UITableView中实现快捷菜单的使用,特别是涉及到Cell的粘贴功能。这将帮助开发者提高用户界面的交互性和功能多样性。 ...
在iOS开发中,UITableView是一种非常重要的控件,用于展示列表数据。这个简单的案例将向我们展示如何使用UITableView来显示从plist文件中读取的数据,并且为每个单元格(Cell)设置点击事件。以下是对这个案例的详细...