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配置不同的标题.
看起来应该很直白:)