首先将Table View拖到View窗口,将数据源和委托连接旁边的圆圈拖到File's Owner图标,这样,控制类就成为这张表的数据源和委托了。
视图控制器的头文件代码如下:
#import <UIKit/UIKit.h> //让类遵从UITableViewDelegate和UITableViewDataSource两个协议,充当表视图的委托和数据源 @interface SZLViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
//声明一个数组用于放置将要显示的数据 NSArray *listData; } @property (nonatomic, retain) NSArray *listData; @end
实现代码:
#import "SZLViewController.h" @implementation SZLViewController @synthesize listData; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSArray *array = [[NSArray alloc] initWithObjects:@"GuangZhou", @"ShenZhen", @"BeiJing", @"ShangHai", @"TianJing", @"HangZhou", @"NingBo", @"HongKong", @"ZhuHai", @"XiZang", @"XinJiang", @"ChangSha", @"NanNing", @"WuLuMuQi", nil]; self.listData = array; [array release]; } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; self.listData = nil; } -(void)dealloc{ [listData release]; [super release]; }
再添加如下代码:
/** *查看指定分区有多少行,默认的分区数量为1,此方法用于返回组成列表的表分区中的行数 */ -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.listData count]; } /** *当表要绘制一行时会调用此方法 */ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //静态字符串实例,充当表示某种表单元的键 static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier"; //SimpleTableIdentifier类型的可重用单元, UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier]; if(cell == nil){ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease]; } //从indexPath变量获取表视图需要显示哪些行 NSUInteger row = [indexPath row]; //从数组获取相应的字符串 cell.textLabel.text = [listData objectAtIndex:row]; return cell; }