首先將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;}