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

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

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

实现一个简单的表

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

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

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

#import<UIKit/UIKit.h>

@interfaceSimple_TableViewController:UIViewController<UITableViewDelegate,UITableViewDataSource>

{

NSArray*listData;

}

@property(nonatomic,retain)NSArray*listData;

@end

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

@synthesizelistData;

-(void)viewDidLoad{

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

self.listData=array;

[arrayrelease];

[superviewDidLoad];

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

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

return[self.listDatacount];

}

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

staticNSString*SimpleTableIdentifier=@"simpleTableIdentifier";

UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifiter:SimpleTableIdentifier];

if(cell==nil){

cell=[[UITableViewCellalloc]initWithFrame:CGRectZeroreuseIdentifier:SimpleTableIdentifier]autorelease];

}

NSUIntergerrow=[indexPathrow];

cell.text=[listDataobjectAtIndex:row];

returncell;

}

}

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

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

当表视图需要绘制其中一行时,则会调用此方法。你会注意到此方法的第二个参数是一个
NSIndexPath实例。表视图正是使用此机制把分区和行绑定到一个对象中的。要从NSIndexPath中
获得一行或一个分区,只需要调用行方法或分区方法就可以了,这两个方法都返回一个int值。