• 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配置不同的标题.

    看起来应该很直白:)

     
  • 相关阅读:
    Maven报错,没有有效的生命周期
    6张图解释IO流
    传统Java JDBC
    快速杀死占用8080端口进程的批处理(kill-8080.bat)
    ubuntu环境配置终极解答
    Linux系统下Java开发环境的配置(未完...)
    Linux常用命令及操作(第二弹)
    Linux下安装Mysql
    Linux常用命令及操作
    int转LPCTSTR
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3944866.html
Copyright © 2020-2023  润新知