表示图是显示表数据的试图对象,它是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值。