UITableView的UITableViewStyleGrouped
UITableView
2023-09-14 08:57:17 时间
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; @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; @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配置不同的标题.
看起来应该很直白:)
UICollectionview的使用详解 三个代理 UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout 前两个的用法和tableView的很像,第三个是布局的协议。(注意:头视图尾视图都是由代理方法获得,而且需要写注册,缺少了也不行。) 注册以后,就不需要再去管理复用的问题了。这点就很简单。这个如果用好的话,会非常的简单。