在场景中选中UITableView组件右键,单击dataSource脱线连接到控制器即可。具体如下图:
此方法也是@require要求实现的。主要用于告诉UITableView每组的每一行显示什么单元格内容。
indexPath仅仅封装了两个数据:
(一)section 在当前UITableView的第几组
(二)row 在当前UITableView的第几行
注意:此方法需要在内部创建一个单元格对象并返回。
代码验证如下:
新建一个具有simple View类型的IOS工程
编辑控制器的.h文件如下:
// // ViewController.h // UITableView(一)之数据显示 // // Created by apple on 15/8/29. // Copyright (c) 2015年 LiuXun. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController<UITableViewDataSource> @property (nonatomic, strong) UITableView * tableView1; @property (nonatomic, strong) UITableView * tableView2; @end编辑控制器的.m文件如下:
// // ViewController.m // UITableView(一)之数据显示 // // Created by apple on 15/8/29. // Copyright (c) 2015年 LiuXun. All rights reserved. // #import "ViewController.h" #define TABVIEWTAG1 100 #define TABVIEWTAG2 200 #define WIDTH [UIScreen mainScreen].bounds.size.width #define HEIGHT [UIScreen mainScreen].bounds.size.height @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.tableView1 = [[UITableView alloc] initWithFrame:CGRectMake(0, 10, WIDTH, HEIGHT/2.5)]; [self.tableView1 setBackgroundColor:[UIColor darkGrayColor]]; self.tableView1.dataSource = self; // 设置当前控制器为数据源对象 self.tableView1.tag = TABVIEWTAG1; // 设置tag值 [self.view addSubview:self.tableView1]; self.tableView2 = [[UITableView alloc] initWithFrame:CGRectMake(0, HEIGHT-self.tableView1.frame.size.height-30, WIDTH, HEIGHT/2.5) ]; self.tableView2.dataSource = self; self.tableView2.tag = TABVIEWTAG2; [self.view addSubview:self.tableView2]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } // 此方法用来告诉UITableView要分为几组 @option类型 -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { switch (tableView.tag) { case TABVIEWTAG1: //为第一个UITableView组件设置为含有一个组 return 1; break; case TABVIEWTAG2: // 为第二个UITableView组件设置两个组 return 2; break; default: return 1; break; } } // 此方法用来告诉哪个UITableView的哪个分组有几行 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { switch (tableView.tag) { case TABVIEWTAG1: if (section == 0) { return 5; }else return 10; break; case TABVIEWTAG2: switch (section) { case 0: return 3; break; case 1: return 5; break; default: return 10; break; } break; default: return 10; break; } } // 此方法用于告诉哪个UITableView的每一组的每一行显示什么内容 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil]; switch (tableView.tag) { case TABVIEWTAG1: cell.textLabel.text = [NSString stringWithFormat:@"我的第一个UITableView 第%d 行",indexPath.row]; return cell; break; case TABVIEWTAG2: cell.textLabel.text = [NSString stringWithFormat:@"我的的第二个组件 第%d组 第%d行",indexPath.section,indexPath.row]; return cell; default: return cell; break; } } @end