UITableView代理协议总结

UITableView代理协议总结

1./** 一共有多少组 */

-  (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return self.personGroups.count;

}

2./** 每一组有多少行 */

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

{

SUNPersonGroupInfo *personGroupInfo = self.personGroups[section];

return personGroupInfo.persons.count;

}

3./** 显示每一行的内容 */

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

{

//由于cell的复用机制,会先从自动释放池中找有没有空闲的名字相同的cell,如果有就复用,没有就创建新的,

static NSString*cellName=@"cell";

UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:cellName];

if(cell==nil){

cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellName];

}

//由于cell的复用机制,需要把cell的设置全部清空,不然下面的复用的时候会出错。

cell.textLabel.text=nil;

cell.detailTextLabel.text=nil;

cell.accessoryType=UITableViewCellAccessoryNone;

//分割线的设置

cell.selectionStyle=UITableViewCellSelectionStyleNone;

cell.textLabel.font=nil;

if(indexPath.section==0){

//设置cell的主标题和副标题(cell的style不一样,设置的效果也不一样,有的还没有副标题)

cell.textLabel.text=@"主标题";

cell.detailTextLabel.text=@"副标题";

//设置cell右边附属按钮的式样,只有下面这个样式可以点击,其他样式都不能点击

cell.accessoryType=UITableViewCellAccessoryDetailDisclosureButton;

cell.selectionStyle=UITableViewCellSelectionStyleBlue;

cell.textLabel.font=[UIFont systemFontOfSize:20];

cell.imageView.image=[UIImage imageNamed:@"001_1"];

//cell右边视图附属视图

UIButton*btn=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];

[btn setTitle:@"有吗" forState:UIControlStateNormal];

btn.frame=CGRectMake(0, 0, 50, 30);

cell.accessoryView=btn;

//选中后的颜色又不发生改变,进行下面的设置

//cell.selectionStyle = UITableViewCellSelectionStyleNone;

//不需要分割线

//tableView.separatorStyle=UITableViewCellSeparatorStyleNone;

}else{

cell.textLabel.text=@"第二个cell";

}

return cell;

}

注意:

返回指定的row 的cell。这个地方是比较关键的地方,一般在这个地方来定制各种个性化的 cell元素。这里只是使用最简单最基本的cell 类型。其中有一个主标题 cell.textLabel 还有一个副标题cell.detailTextLabel,  还有一个 image在最前头 叫cell.imageView.  还可以设置右边的图标,通过cell.accessoryType 可以设置是饱满的向右的蓝色箭头,还是单薄的向右箭头,还是勾勾标记。

4.//这个方法返回指定的 row 的高度。

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

5.//这个方法返回指定的 section的header
view 的高度。

- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section;

6.// 这个方法返回指定的 section的footer
view 的高度。

- (CGFloat)tableView:(UITableView *)tableView
heightForFooterInSection:(NSInteger)section;

7./** 返回标题文字 */

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

{

SUNPersonGroupInfo *personGroup = self.personGroups[section];

return personGroup.title;

}

8./** 右侧索引 */

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

{

return [self.personGroups valueForKey:@"title"];

}

//
开始编辑,一旦editing == YES就默认开启删除模式

如果 self.tableView.editing
=
NO;

9.// 编辑模式

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

{

return UITableViewCellEditingStyleInsert;

}

UITableViewCellEditingStyleNone,

UITableViewCellEditingStyleDelete,     删除

UITableViewCellEditingStyleInsert      添加

10.// 可以显示拖动控件

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

{

return YES;

}

11.//当用户选中某个行的cell的时候,回调用这个。但是首先,必须设置tableview的一个属性为可以select 才行。

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

{

NSLog(@"第%d个section中第%d行的被点击",indexPath.section,indexPath.row);

}

注意:如果不希望响应select,那么就可以用下面的代码设置属性:

TableView.allowsSelection=NO;

12.//如何设置tableview  每行之间的 分割线 如果不需要分割线,那么就设置属性为 UITableViewCellSeparatorStyleNone  即可。

self.tableView.separatorStyle=UITableViewCellSeparatorStyleSingleLine;

13.//如何设置 tableview
cell的背景颜色

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

{

//设置背景颜色

cell.contentView.backgroundColor=[UIColor colorWithRed:0.957 green:0.957 blue:0.957 alpha:1];

}

//这个函数响应,用户点击cell 右边的 箭头(如果有的话)

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

//如何设置tableview 可以被编辑,首先要进入编辑模式:如果要退出编辑模式,肯定就是设置为NO

[TableView setEditing:YES animated:YES];

//返回当前cell  要执行的是哪种编辑,下面的代码是 返回 删除  模式

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

//通知告诉用户编辑了 哪个cell,对应上面的代码,我们在这个函数里面执行删除cell的操作。

-(void) tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle) editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath

2.//滑动删除

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

{

if (editingStyle == UITableViewCellEditingStyleInsert)
{

}

}

3.//删除的时候,左边显示的按钮,默认是delegate;

-(NSString*)tableView:(UITableView *)tableView
titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

{

return @"删除";

}

注意:默认有一个UITableView,并且self.tableview
== self.view

使用以下两条语句可以跟踪验证

NSLog(@"%p %p", self.view, self.tableView);

NSLog(@"%@", self.view.class);

时间: 2024-10-25 05:07:06

UITableView代理协议总结的相关文章

OS开发UI篇—使用UItableview完成一个简单的QQ好友列表

本文转自:http://www.cnblogs.com/wendingding/p/3763330.html 一.实现效果             二.实现代码 1.数据模型部分 YYQQGroupModel.h文件 1 // 2 // YYQQGroupModel.h 3 // 02-QQ好友列表(基本数据的加载) 4 // 5 // Created by apple on 14-5-31. 6 // Copyright (c) 2014年 itcase. All rights reserve

UITableView的增删改插

//  AppDelegate.m文件 #import "AppDelegate.h" #import "RootTableViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)l

UITableView全面解析

本文转自:http://www.cocoachina.com/ios/20140922/9710.html 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不开它强大的功能,今天这篇文章将针对UITableView重点展开讨论.今天的主要内容包括: 1.基本介绍 2.数据源 3.代理 4.性能优化 5.UITableViewCell 6.常用操作

UITableView编辑

UITableView 编辑步骤如下: 1.让TableView处于编辑状态 2.协议设定  2.1.确定Cell是否处于编辑状态  2.2.设定Cell的编辑样式(删除.添加) 2.3.编辑状态进?提交 注意: 编辑结束后,由于numberOfRowsInSection这个协议只在 tableview添加到?视图的时候??次,?且table上的数据 都是由数组提供,因此,需要先将数组中的元素删除,然后 让table的协议重新??遍进?重新赋值. 即:先修改数据源,再刷新table(使?relo

swift:创建表格UITableView

用swift创建单元格和用iOS创建单元格形式基本相同,就是语法上有些异样.swift中调用成员方法不再使用[ ]来发送消息,而是使用.成员方法的形式调用成员函数.这种格式非常类似于java中的点成员运算符.swift中对其他类的引用不用导入头文件.这里就不废话了,现在纯代码创建UITableview实例如下: 具体实例如下: 1.首先用swift创建一个工程Project 2.再用swift创建一个Person类,生成Person.swift文件 3.在Perosn.swift文件中将设置的属

iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(二)

一.实现效果             二.实现代码 1.数据模型部分 YYQQGroupModel.h文件 1 // 2 // YYQQGroupModel.h 3 // 02-QQ好友列表(基本数据的加载) 4 // 5 // Created by apple on 14-5-31. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @i

iOS开发UI篇—直接使用UITableView Controller

一.一般过程 1 // 2 // YYViewController.h 3 // UITableView Controller 4 // 5 // Created by 孔医己 on 14-6-2. 6 // Copyright (c) 2014年 itcast. All rights reserved. 7 // 8 9 #import <UIKit/UIKit.h> 10 11 @interface YYViewController : UIViewController 12 13 @en

IOS开发系列--UITableView使用全面解析

--UIKit之UITableView 概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不开它强大的功能,今天这篇文章将针对UITableView重点展开讨论.今天的主要内容包括: 基本介绍 数据源 代理 性能优化 UITableViewCell 常用操作 UITableViewController MVC模式 基本介绍 UITableVie

iOS开发系列--UITableView全面解析

概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不开它强大的功能,今天这篇文章将针对UITableView重点展开讨论.今天的主要内容包括: 基本介绍 数据源 代理 性能优化 UITableViewCell 常用操作 UITableViewController MVC模式 基本介绍 UITableView有两种风格:UITableViewSt