UITableView的UITableViewStyleGrouped
以下图例就是分组UITableViewStyleGrouped的样式
本人提供快速集成的方法,不弄脏你那双手:)
源码:
TableViewData.h
//// TableVewData.h// Sections//// Copyright (c) 2014年 Y.X. All rights reserved.//#import@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 ()@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配置不同的标题.
看起来应该很直白:)