表示图是显示表数据的试图对象,它是UITableView类的一个实例。表中的每个课件的行都是UITableViewCell类实现。因此,表示图是显示表中可见部分对象,表试图单元负责显示表中的一行。

表示图并不负责存储表中的数据。他们只存储足够绘制当前可见行的数据。表示图从遵循UITableViewLegate协议的对象获取配置数据,从遵循UITableViewDataSource协议的对象获得行数据。

表示图分为两种基本样式。一种是分组表。另一类是索引表。表中的每个部分被称为数据源中的分区(section)。

实现一个简单的表

1、打开程序创建一个Simple_TableViewController的项目,单击大打开  Simple_TableViewController.xib,View窗口应该已经打开,因此,在库中找到TableView,并将它拖到View窗口中即可。

2、将TableView关联到文件,只需连接到File‘s Owner 。这样控制器类就成了此表的数据源和委托。  

3、打开Simple_TableViewController.h,添加下面代码

#import <UIKit/UIKit.h>

@interface Simple_TableViewController:UIViewController<UITableViewDelegate,UITableViewDataSource>

{

NSArray *listData;

}  

@property(nonatomic,retain) NSArray *listData;

@end

 

 

4、在Simple_TableViewController.m里添加。头文件不写了。

@synthesize listData;

-(void)viewDidLoad{

NSArray *array=[[NSArray alloc]initWithObjects:@"dsda",@"erwerwe",@"dsada",nil];

self.listData=array;

[array release];

[super viewDidLoad];

 

//自动生成的代码我急不写了

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

return [self.listData count];

}

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

static NSString * dentifier";

UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifiter:SimpleTableIdentifier];

if(cell==nil){

cell=[[UITableViewCell alloc]initWithFrame:CGRectZero reuseIdentifier:SimpleTableIdentifier] autorelease];

}

NSUInterger row=[indexPath row];

cell.text=[listData objectAtIndex:row];

return cell;

}

 

}

 

第一个方法是tableView:

numberOfRowsInSection:,表使用它来查看指定分区中有多少行。正如你所希望的,默认的分区
数量为1,此方法用于返回组成列表的表分区中的行数。只需返回数组中数组项的数量即可。

 

下一个方法可能需要一些解释,让我们更仔细地看一下此方法:

当表视图需要绘制其中一行时,则会调用此方法。你会注意到此方法的第二个参数是一个

NSIndexPath实例。表视图正是使用此机制把分区和行绑定到一个对象中的。要从NSIndexPath中
获得一行或一个分区,只需要调用行方法或分区方法就可以了,这两个方法都返回一个int值。