在xib上拖一个uitableView ,并把dataSource,delegagte与files owner联系。
1,接口实现协议
<UITableViewDataSource,UITableViewDelegate>
2,用windows + 鼠标左键查看方法内容,在UITableViewDataSource找到必须实现的方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
3,书写实现方法:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSUInteger rowx = [indexPath row];
UITableViewCell *cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:nil]autorelease];
if(rowx == 0 ){
cell.textLabel.text = @"1";
cell.detailTextLabel.text = @"1_detail";
}else if(rowx == 1 ){
cell.textLabel.text = @"2";
cell.detailTextLabel.text = @"2_detail";
}else if(rowx == 2){
cell.textLabel.text = @"3";
cell.detailTextLabel.text = @"3_detail";
[cell.imageView setImage:[UIImage imageNamed:@"1.jpg"]];
} return cell;
}
优化代码:
接口定义属性:
@property(assign) NSArray *listData;
实现类里:
- (void)viewDidLoad
{
NSArray *array = [[NSArray alloc]initWithObjects:@"one",@"Two",@"three",nil ];
self.listData = array;
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.listData.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
/**自定义重用标示符号:**/
static NSString *simpleTableIdentifier = @"SimpleTableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if(cell == nil) {
//初始化表格单元
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:simpleTableIdentifier]
autorelease];
}
NSUInteger rowx = [indexPath row];
NSString *name = [self.listData objectAtIndex:rowx];
cell.textLabel.text = name;
if(rowx == 0 ){
cell.detailTextLabel.text = @"1_detail";
}else if(rowx == 1 ){
cell.detailTextLabel.text = @"2_detail";
}else if(rowx == 2){
cell.detailTextLabel.text = @"3_detail";
[cell.imageView setImage:[UIImage imageNamed:@"1.jpg"]];
}
return cell;
}
鼠标选中行,添加监听事件
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog (@"用户选中了第%d行",[indexPath row]);
return indexPath;
}
更多事件,查看代理类:UITableViewDelegate