`
_wyh
  • 浏览: 61179 次
社区版块
存档分类
最新评论

UITableView基本使用方法

    博客分类:
  • ios
ios 
阅读更多

    在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信、QQ等软件上随处都是UITableView。

 

    1,UITableView基本样式

        (1):UITableViewStylePlain(普通表视图)

        (2):UITableViewStyleGroup(分组表视图)

 

    2,UITableView表视图的结构

      (1):表头视图(table header view).表视图最上边的视图,用于展示表视图的信息

      (2):表脚视图(table footer view).表视图最下边的视图,用于展示表视图的部分信息

      (3):单元格(cell)。它是组成表视图每一行的单位视图

      (4):节(selection)。它是多个单元格在组成,并且有节头和节脚

      (5):节头。节的头部,描述节的信息

      (6):节脚.节的尾部,描述节的信息或者一些声明信息

      

    3,表视图的创建

       ios表没有限制行数,行数仅受可用存储空间的限制,表只有一列。是UITableView类的一个实例。

      (1)Controller.h需要实现两个  delegate ,分别是UITableViewDelegate 和  UITableViewDataSource

 

@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

 

      (2)UITableView对象的 delegate和dataSource要设置为 self,并添加至view。

 

tableView.delegate = self;
tableView.dataSource = self;
[self.view addSubview:tableView];

 

      (3)然后就可以实现这些dataSource和delegate的一些方法。

     

     4,dataSource和delegate

        UITableView属于View,UIViewController属于Controller。  

        View所需要的数据,应该是Controller去跟Model协调然后获得,以后由Controller去给View来进行显示。View永远的不去直接跟Model联系。

        这样当UITableView初始化的时候。他就会去问他的data source。我需要显示多少行数据啊。每一行的数据都是什么内容啊。这时候UIViewController应该已经从Model拿到了数据。

        然后,通过- (NSInteger)tableView:(UITableView )tableView numberOfRowsInSection:(NSInteger)section; 告诉UITableview,你的这一组要显示n条数据。         又用- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath )indexPath函数 告诉UITableView说,第几组第几条数据的具体内容是什么。

     

       5,UITableViewDataSource常用方法

           (1),必须实现 设置每个分组的行数

 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

 

           (2),必须实现, 设置每个分区的cell

 

- (UITableViewCell *)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
// 每行都是一个UITableViewCell实例

 

           (3),设置分组个数  默认返回1   第一个被调用

 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

 

           (4),为每个分组设置标题

 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

 

           (5),为分组设置索引

 

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView              

 

           (6),设置tableView每组的编辑状态              

 

- (BOOL)tableView:(UITableView *)tableView canEditRowA tIndexPath:(NSIndexPath *)indexPath

 

           (7),当提交编辑操作时触发(插入或删除)

 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyleforRowAtIndexPath:(NSIndexPath *)indexPath 

 

           (8),设置tableView每一个cell是否允许移动

 

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath

 

           (9),提交移动操作之后触发

 

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath                

 

 

       6,UITableViewDelegate常用方法

           (1),设置行高

 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

 

           (2),设置cell选中的事件

 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath                

 

           (3),设置tableViewCell的编辑样式(插入,删除) 

 

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath*)indexPath               

 

           (4),设置当点击删除按钮时提示的确认文字

 

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath                 *)indexPath NS_AVAILABLE_IOS(3_0)

 

           (5),设置cell的移动位置

 

- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath                       *)sourceIndexPath toProposedIndexPath:(NSIndexPath*)proposedDestinationIndexPath{  
//现在移动时只能在本区内移动    //sourceIndexPath原地址    //proposedDestinationIndexPath将要移动到的地址                               

        if(sourceIndexPath.section == proposedDestinationIndexPath.section) {        //如果是同一个分区,返回目的地址                                       
                returnproposedDestinationIndexPath;   
        }        //如果不是同一个分区,返回原来的地址                                                 

         returnsourceIndexPath;    
}

                

       7,UITableViewCell

             (1)UItableViewCell的四种风格常量:

UITableViewCellStyleDefault                      
UITableViewCellStyleSubtitle 
UITableViewCellStyleValue1                      
UITableViewCellStyleValue2

             (2)表视图中cell的实现:

             - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  

             {  

                      static NSString *identifier = @"Cell";  

                      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];  

                      if (!cell) {  

                               cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Cell];  

                      }  

                               return cell;  

               }  

 

             (3)重用机制:UITableView的dequeueReusableCellWithIdentifier方法去一个队列里面需找有没有相同ID的的Cell。如果有,就提出来重用。如果没有就跳进if里面去创建。所以我们在if里面创建的时候,不会改变的内容都可以在里面创建,这样就只用创建一次。需要改变的内容我们就放到if后面去写。 这样我们就能完成高效的UITableView。当然,理论上来说,你可以不用这样的机制,而去直接每次创建一个Cell。不过这是非常浪费资源的一个做法,不提倡。

我们可以这样理解, dequeueReusableCellWithIdentifier方法 就是用来创建几个有限的cell。 其实,手机屏幕再大,可显示的行数也是有限的。 或许,一个TableView 的数据来源有可能是上千条数据,但我们不会为此创建上千个Cell,如果这样做,对内存将是一个极大的浪费。所以呢, 我们通过dequeueReusableCellWithIdentifier方法,重用已经创建的Cell, 只需要填充不同的数据即可。 

 

 

 

 

分享到:
评论

相关推荐

    UITableView、UITableView基本用法、UITableView详解

    iOS 开发中 UITableView 的使用详解 UITableView 是 iOS 开发中最常用的控件之一,用于显示列表数据。它类似于 Android 中的 ListView,都是用于显示列表数据的控件。在 iOS 开发中,UITableView 是一个非常重要的...

    UITableView基本用法大全

    本教程将深入讲解UITableView的基本用法,包括创建、配置、数据源与代理方法、Cell的重用机制以及AutoLayout的应用。 首先,创建UITableView非常简单,既可以通过代码创建,也可以在Storyboard中拖拽添加。在代码中...

    iOS开发中UITableview控件的基本使用及性能优化方法

    在本教程中,我们将深入探讨如何使用Objective-C实现UITableView的基本功能,并探讨性能优化策略。 首先,我们来看一下如何创建一个简单的英雄展示程序。在NJHero.h文件中,定义了一个NJHero类,该类用来存储每个...

    iOS基本控件UITableView示例

    本示例将深入探讨UITableView的基本使用方法,帮助开发者理解和掌握其核心功能。 首先,UITableView由两部分组成:数据源(DataSource)和委托(Delegate)。数据源负责提供单元格的内容,而委托则处理用户与表格的...

    UITableView的简单使用

    本教程将深入探讨UITableView的简单使用,帮助开发者快速掌握其核心概念和基本功能。 首先,UITableView是由两部分组成:数据源(DataSource)和委托(Delegate)。数据源负责提供单元格内容,而委托则处理用户与...

    UITableView 快捷菜单的使用Demo

    首先,让我们理解UITableView的基本工作原理。UITableView是由多个UITableViewCell组成的,每个Cell可以视为列表中的一个条目。当你滚动UITableView时,系统会自动重用已滑出屏幕的Cells,以提高性能。因此,理解...

    iphone应用开发:UITableView的详细讲解(一)

    本教程将深入探讨UITableView的使用,特别是针对iPhone应用开发。在第一部分中,我们将着重理解UITableView的基本概念,设置数据源,创建自定义Cell以及如何进行数据绑定。 首先,UITableView是一种控件,用于展示...

    Swift UITableView and protocol 学习使用

    5. **UITableViewCell**:这是用于填充UITableView的基本单元。每个单元格都可以自定义,包括文本、图像、开关等。通过重写`awakeFromNib`方法或使用Interface Builder可以实现定制。 6. **Nibs和Storyboard**:在...

    Iphone-UITableView使用

    首先,我们要了解`UITableView`的基本结构。`UITableView` 是一个视图对象,负责显示一系列行,每行可以是可自定义的`UITableViewCell`。`UITableViewCell` 内容可以根据需求进行定制,包含图片、文本、按钮等元素。...

    UITableView

    除了基本的单列列表,UITableView还可以创建多列布局,或者添加可滑动的表头和表尾视图。这需要自定义数据源方法来配置。 9. 自定义分割线: 通过修改`separatorStyle`和`separatorInset`属性,可以调整表格的...

    iPhone之UITableView入门

    本教程将带你入门iPhone上的UITableView使用,通过一个简单的示例项目"**MyTableView**"来深入理解其工作原理和基本操作。 首先,UITableView的主要组成部分包括:表头(HeaderInSection)、表尾(FooterSection)...

    UItableView操作大全

    2. **通知UITableView**:在修改了数据源后,需要调用`reloadData`方法或者使用`insertRows(at:with:)`方法通知UITableView刷新特定行或插入新行。 3. **更新Cell**:UITableView会在需要时调用`cellForRowAt`方法,...

    IOS iphone UITableView简单例子

    这个“IOS iphone UITableView简单例子”是一个基础的教程,旨在帮助开发者理解如何在iPhone应用中实现UITableView的基本功能。在这个项目中,我们将会看到如何创建两个不同的表视图区域,并且在用户点击某一行时弹...

    UITableView Demo代码

    总的来说,“UITableView Demo”项目涵盖了UITableView的基本使用,包括数据源的配置、单元格的创建与复用、用户交互的处理,以及可能的自定义单元格设计。通过学习这个Demo,开发者能够更好地理解和运用UITableView...

    《使用UITableView实现树视图》一文源代码

    首先,我们需要理解UITableView的基本工作原理。UITableView是由一个个UITableViewCell组成的,每个单元格对应数据模型中的一个条目。当用户滚动表格时,UITableView会根据需要复用这些单元格,以提高性能。因此,...

    iOS开发中UITableview控件的基本使用及性能优化

    首先,`UITableView`的基本使用涉及到以下几个核心概念: 1. **DataSource**:`UITableViewDataSource`是`UITableView`的数据源协议,你需要实现它来提供单元格的数量和每个单元格的内容。例如,`...

    iphone 关于UITableView的排序,搜索、使用Interface Builder创建等

    首先,我们来了解一下UITableView的基本概念。UITableView是一个视图控件,用于显示一列或多列数据,每个单元格(UITableViewCell)代表一个数据项。它提供了可滚动的界面,使用户能够查看大量信息而不必占据屏幕的...

    iOS UItableView

    首先,我们需要理解UITableView的基本概念。UITableView是一个可滚动的视图,可以显示一行行的数据,这些数据通常来自一个数据源(如数组或数据库)。每个单元格(cell)都可以自定义以适应不同的展示需求。 在`...

    UITableView手指横向滑动触发事件

    在iOS开发中,UITableView是用于展示列表数据的关键组件。当你想要实现一个功能,让用户...总的来说,通过组合使用UITableView的Delegate方法和手势识别器,你可以实现丰富的用户交互,包括自定义的横向滑动触发事件。

    UITableView2 Demo代码

    首先,我们来探讨`UITableView`的基本概念。UITableView是一个可滚动的控件,可以显示一行行的数据,这些数据由UITableViewDataSource提供。DataSource是必须遵循UITableViewDataSource协议的对象,它负责告诉...

Global site tag (gtag.js) - Google Analytics