一、 创建项目 storyboard 。
二、 往ViewController上拖一个UITableView上去。
此时,建立连线,右键TableView,设置datasource,到Controller上。
三、 在.h文件中,UIViewController要遵守UITableViewDataSource这个协议。
四、 如果此时,Run, 就会报错,可以看下错误信息。
提示没有实现numberOfSectionsInTableView方法。
五、 在.m文件中,整理下重要和必须的几个方法:
5.1 分组的数量
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
5.2 每个分组的行数量
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
5.3 每行显示的内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
记录个小例子:
#import "ViewController.h" @interface ViewController () @property (strong, nonatomic) NSArray * arrLN; //辽宁省数组 @property (strong, nonatomic) NSArray * arrJS; //江苏省数组 @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //初始化数组 _arrLN = @[@"沈阳市", @"大连市", @"鞍山市", @"锦州市"]; _arrJS = @[@"南京市", @"无锡市", @"徐州市", @"苏州市", @"南通市"]; } #pragma mark - 分组数量 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 2; //分2组 } #pragma mark - 每个分组的行数 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (section == 0) { return _arrLN.count; //辽宁有多少行 } else { return _arrJS.count; //江苏有多少行 } } #pragma mark - 每行显示的内容 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil]; if (indexPath.section == 0) { cell.textLabel.text = _arrLN[indexPath.row]; //cell显示的内容 } else { cell.textLabel.text = _arrJS[indexPath.row]; } return cell; } //分组头部 -(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { return section == 0 ? @"辽宁省" : @"江苏省"; } //分组尾部 -(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { return section == 0 ? @"辽宁省结束" : @"江苏省结束"; }
总结:
1. 初步了解下,TableView基本的几个方法。
2. 小例子,在上下拖动的时候,存在Error。 待后续解决。
时间: 2024-10-25 20:50:23