几乎大多数的IOS项目中都可以看得到UITableView 的影子,总结了一下,UITableView是iOS开发中,使用最广泛的组件之一,通常都用它来展示一列数据 。开始看一下UITableView的基本语法:
一、UITableView有两个代理协议
Protocol UITableViewDataSource:用来给TableView提供数据
Protocal UITableViewDelegate:控制TableView的展示方式以及事件响应
二、实现代理方法
1、UITableViewDataSource代理方法实现
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView //指定有多少个分区(Section),默认为1
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section//指定每个分区中有多少行,默认为1
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath //绘制Cell
示例代码:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return1;//这里使用默认,如果你的数据需要分组显示,在这里就可以定义你所需要的组的个数
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [arrays count];//arrays是你所定义的数据存储数组
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier"; //相当于一个行标识
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
//tableViewCell重绘
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] ;
}
NSUInteger row = indexPath.row; //获取行号
NSString *titleStr = [arrays objectAtIndex:row];//获取数据
cell.textLabel.text = titleStr;//数据显示
return cell;
}
当然这里还有一些复杂的使用,例如headerView 、 footerView 、titleForHeaderInSection 等等 。
-(NSString*)tableView:(UITableView*)tableViewtitleForHeaderInSection:(NSInteger)section //设置分区高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath //改变行的高度
-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath //行缩进
二、UITableViewDelegate的代理方法实现
UITableViewDelegate用来管理Row的选择和编辑,有四个方法如下:
tableView:willSelectRowAtIndexPath:
tableView:didSelectRowAtIndexPath:
tableView:willDeselectRowAtIndexPath:
tableView:didDeselectRowAtIndexPath:
此四个方法管理Row的选择. 例如willSelectRowAtIndexPath, 如果此方法返回nil,那么所属的row将无法被选中。
tableView:willBeginEditingRowAtIndexPath:
tableView:didEndEditingRowAtIndexPath:
tableView:editingStyleForRowAtIndexPath:
tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath:
此四个方法在编辑Row时会被触发。editingStyleForRowAtIndexPath决定Row是否可以被编辑,删除或者移动。targetIndexPathForMoveFromRowAtIndexPath则在移动Row时会把触发,在交换Row位置的时候,必须同时交换DataSource中数据的位置。
示例代码:
//行缩进
-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath{ NSUInteger row = [indexPath row];
return row;
}
//改变行的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 40;
}
三、
常用的一些枚举类型选择
//选中cell时的颜色
typedef enum {
UITableViewCellSelectionStyleNone,
UITableViewCellSelectionStyleBlue,
UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle
TIPS:
自定义选中cell的背景颜色:
cell.selectedBackgroundView = [[[UIView alloc] initWithFrame:cell.frame] autorelease];
cell.selectedBackgroundView.backgroundColor = [UIColor redColor];
//cell右边按钮格式
typedef enum {
UITableViewCellAccessoryNone, // don't show any accessory view没有附件
UITableViewCellAccessoryDisclosureIndicator, // regular chevron. doesn't track 黑色向右的箭头
UITableViewCellAccessoryDetailDisclosureButton, // blue button w/ chevron. tracks 蓝色附件按钮
UITableViewCellAccessoryCheckmark // checkmark. doesn't track 复选框,支持选择
} UITableViewCellAccessoryType
//是否加换行线
typedef enum {
UITableViewCellSeparatorStyleNone,
UITableViewCellSeparatorStyleSingleLine
} UITableViewCellSeparatorStyle
//改变换行线颜色
tableView.separatorColor = [UIColor blueColor];
//系统提供的UITableView也包含了四种风格的布局
typedef enum {
UITableViewCellStyleDefault,
UITableViewCellStyleValue1,
UITableViewCellStyleValue2,
UITableViewCellStyleSubtitle
} UITableViewCellStyle;
分享到:
相关推荐
在 iOS 开发中,UITableView 是一个非常重要的控件,本文将详细介绍 UITableView 的基本用法和详细解释。 一、UITableView 基本用法 在使用 UITableView 之前,需要在 Xcode 中新建一个项目,并在 Main.storyboard...
本教程将深入讲解UITableView的基本用法,包括创建、配置、数据源与代理方法、Cell的重用机制以及AutoLayout的应用。 首先,创建UITableView非常简单,既可以通过代码创建,也可以在Storyboard中拖拽添加。在代码中...
UITableView几乎是iOS开发中用处最广的一个控件,当然也是要记相当多东西的一个控件。 创建 首先创建一个新的项目,并添加一个MainViewController的Class文件 打开MainViewController.h文件 @interface ...
本教程将详细介绍如何使用 `UITableView` 并实现特定的视觉效果,包括设置单元格的圆角和添加阴影。我们将深入探讨 `UITableView` 的基本概念,以及如何通过代码实现描述中提到的定制化效果。 首先,`UITableView` ...
本示例将深入探讨UITableView的基本使用方法,帮助开发者理解和掌握其核心功能。 首先,UITableView由两部分组成:数据源(DataSource)和委托(Delegate)。数据源负责提供单元格的内容,而委托则处理用户与表格的...
除了基本的单列列表,UITableView还可以创建多列布局,或者添加可滑动的表头和表尾视图。这需要自定义数据源方法来配置。 9. 自定义分割线: 通过修改`separatorStyle`和`separatorInset`属性,可以调整表格的...
本教程将深入探讨UITableView的简单使用,帮助开发者快速掌握其核心概念和基本功能。 首先,UITableView是由两部分组成:数据源(DataSource)和委托(Delegate)。数据源负责提供单元格内容,而委托则处理用户与...
首先,让我们理解UITableView的基本工作原理。UITableView是由多个UITableViewCell组成的,每个Cell可以视为列表中的一个条目。当你滚动UITableView时,系统会自动重用已滑出屏幕的Cells,以提高性能。因此,理解...
掌握其基本用法,创建自定义Cell以及高效的数据绑定,能帮助你构建出功能强大的用户界面。在这个系列的第一部分,我们已经了解了UITableView的基础知识,后续章节将进一步深入讨论UITableView的高级特性,如Section...
在iOS开发中,UITableView是一种非常重要的控件,用于展示数据列表。...通过理解和实践这个例子,开发者可以进一步深入到更复杂的UITableView用法,如自定义单元格、分组表视图、下拉刷新和无限滚动等。
本教程将带你入门iPhone上的UITableView使用,通过一个简单的示例项目"**MyTableView**"来深入理解其工作原理和基本操作。 首先,UITableView的主要组成部分包括:表头(HeaderInSection)、表尾(FooterSection)...
2. **通知UITableView**:在修改了数据源后,需要调用`reloadData`方法或者使用`insertRows(at:with:)`方法通知UITableView刷新特定行或插入新行。 3. **更新Cell**:UITableView会在需要时调用`cellForRowAt`方法,...
在本教程中,我们将深入探讨如何使用Objective-C实现UITableView的基本功能,并探讨性能优化策略。 首先,我们来看一下如何创建一个简单的英雄展示程序。在NJHero.h文件中,定义了一个NJHero类,该类用来存储每个...
首先,我们来探讨`UITableView`的基本概念。UITableView是一个可滚动的控件,可以显示一行行的数据,这些数据由UITableViewDataSource提供。DataSource是必须遵循UITableViewDataSource协议的对象,它负责告诉...
5. **UITableViewCell**:这是用于填充UITableView的基本单元。每个单元格都可以自定义,包括文本、图像、开关等。通过重写`awakeFromNib`方法或使用Interface Builder可以实现定制。 6. **Nibs和Storyboard**:在...
总的来说,“UITableView Demo”项目涵盖了UITableView的基本使用,包括数据源的配置、单元格的创建与复用、用户交互的处理,以及可能的自定义单元格设计。通过学习这个Demo,开发者能够更好地理解和运用UITableView...
首先,我们需要理解UITableView的基本概念。UITableView是一个可滚动的视图,可以显示一行行的数据,这些数据通常来自一个数据源(如数组或数据库)。每个单元格(cell)都可以自定义以适应不同的展示需求。 在`...
首先,我们需要理解UITableView的基本组成部分。UITableView由两大部分构成:数据源(DataSource)和委托(Delegate)。数据源负责提供单元格数量以及每个单元格的内容,委托则处理单元格的显示逻辑和其他交互事件。...
首先,我们要了解`UITableView`的基本结构。`UITableView` 是一个视图对象,负责显示一系列行,每行可以是可自定义的`UITableViewCell`。`UITableViewCell` 内容可以根据需求进行定制,包含图片、文本、按钮等元素。...
首先,我们需要理解UITableView的基本工作原理。UITableView由两部分组成:数据源(DataSource)和委托(Delegate)。数据源负责提供单元格的数量和内容,而委托则处理与用户交互相关的事件,如单元格的点击。在实现...