zl程序教程

您现在的位置是:首页 >  其它

当前栏目

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的很像,第三个是布局的协议。(注意:头视图尾视图都是由代理方法获得,而且需要写注册,缺少了也不行。) 注册以后,就不需要再去管理复用的问题了。这点就很简单。这个如果用好的话,会非常的简单。