UITableView的UITableViewStyleGrouped
UITableView的UITableViewStyleGrouped
以下图例就是分组UITableViewStyleGrouped的样式
本人提供快速集成的方法,不弄脏你那双手:)
源码:
TableViewData.h
// // TableVewData.h // Sections // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <Foundation/Foundation.h> @interface TableViewData : NSObject // 添加数据源 + 数据源标签 - (void)addDataArray:(NSArray *)array arrayFlag:(NSString *)flag; // 对应区域中的row的个数 - (NSInteger)numberOfRowsInSection:(NSInteger)section; // 有几个section - (NSInteger)numberOfSections; // 对应于Section上的flag值标签 - (NSString *)flagInSection:(NSInteger)section; // 对应于indexPath中的数据 - (id)dataInIndexPath:(NSIndexPath *)indexPath; @end
TableViewData.m
// // TableVewData.m // Sections // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "TableViewData.h" @interface TableViewData () @property (nonatomic, strong) NSMutableArray *dataArray; @property (nonatomic, strong) NSMutableArray *nameList; @end @implementation TableViewData - (instancetype)init { self = [super init]; if (self) { _dataArray = [NSMutableArray new]; _nameList = [NSMutableArray new]; } return self; } - (void)addDataArray:(NSArray *)array arrayFlag:(NSString *)flag { [_dataArray addObject:array]; [_nameList addObject:flag]; } - (NSInteger)numberOfRowsInSection:(NSInteger)section { return [_dataArray[section] count]; } - (NSInteger)numberOfSections { return [_dataArray count]; } - (NSString *)flagInSection:(NSInteger)section { return _nameList[section]; } - (id)dataInIndexPath:(NSIndexPath *)indexPath { return _dataArray[indexPath.section][indexPath.row]; } @end
使用情况:
// // RootViewController.m // UITableViewGroup // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "RootViewController.h" #import "TableViewData.h" static NSString *reusedFlag = @"reusedFlag"; @interface RootViewController ()<UITableViewDataSource, UITableViewDelegate> @property (nonatomic, strong) UITableView *tableView; @property (nonatomic, strong) TableViewData *tableViewData; @end @implementation RootViewController - (void)viewDidLoad { [super viewDidLoad]; // 初始化tableView(分组形势的tableView) _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped]; _tableView.delegate = self; _tableView.dataSource = self; [self.view addSubview:_tableView]; // tableView数据 _tableViewData = [TableViewData new]; [_tableViewData addDataArray:@[@"1", @"2", @"3"] arrayFlag:@"设置"]; // section1 [_tableViewData addDataArray:@[@"一", @"二", @"三"] arrayFlag:@"配置"]; // section2 [_tableViewData addDataArray:@[@"one", @"two", @"three"] arrayFlag:@"闲置"]; // section3 } // 每个区多少个cell - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [_tableViewData numberOfRowsInSection:section]; } // 创建cell - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reusedFlag]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reusedFlag]; } // section1 if ([[_tableViewData flagInSection:indexPath.section] isEqualToString:@"设置"]) { NSString *str = [_tableViewData dataInIndexPath:indexPath]; cell.textLabel.text = str; cell.textLabel.textColor = [UIColor redColor]; } // section2 if ([[_tableViewData flagInSection:indexPath.section] isEqualToString:@"配置"]) { NSString *str = [_tableViewData dataInIndexPath:indexPath]; cell.textLabel.text = str; cell.textLabel.textColor = [UIColor blueColor]; } // section3 if ([[_tableViewData flagInSection:indexPath.section] isEqualToString:@"闲置"]) { NSString *str = [_tableViewData dataInIndexPath:indexPath]; cell.textLabel.text = str; cell.textLabel.textColor = [UIColor magentaColor]; } return cell; } // 多少个区 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [_tableViewData numberOfSections]; } // 每个区的标题 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { return [_tableViewData flagInSection:section]; } @end
几个需要注意的地方:
以下两个方法是DataSource中的,直接与分组有关.
不同的section配置不同的标题.
看起来应该很直白:)