• UI2_QQ折叠-UITableViewController


    //  CustomUITableViewController.h
    //  UI2_QQ折叠-UITableViewController
    //
    //  Created by zhangxueming on 15/7/15.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface CustomUITableViewController : UITableViewController
    {
        int sectionState[20];//标志分区的状态
    }
    
    //提供数据源
    @property (nonatomic, retain)NSMutableArray *dataList;
    
    @end
    
    //
    //  CustomUITableViewController.m
    //  UI2_QQ折叠-UITableViewController
    //
    //  Created by zhangxueming on 15/7/15.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "CustomUITableViewController.h"
    
    #define FoldImageName @"arrow_fold"
    #define SpreadImageName @"arrow_spread"
    
    @interface CustomUITableViewController ()
    
    @end
    
    @implementation CustomUITableViewController
    
    - (instancetype)initWithStyle:(UITableViewStyle)style
    {
        self = [super initWithStyle:style];
        if (self) {
            self.title = @"QQ折叠";
            self.dataList = [NSMutableArray array];
        }
        return self;
    }
    
    - (void)creatData
    {
        for (int i=0; i<20; i++) {
            NSMutableArray *array = [NSMutableArray array];
            for (int j=0; j<5; j++) {
                NSString *name = [NSString stringWithFormat:@"小明%d", j+1];
                [array addObject:name];
            }
            [_dataList addObject:array];
        }
    }
    //设置分区的个数
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return self.dataList.count;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        //根据分区的状态返回行数
        if (sectionState[section]) {
            return 0;
        }
        return [[self.dataList objectAtIndex:section] count];
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *cellId = @"cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
        if (!cell) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellId];
        }
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        cell.textLabel.text = [[self.dataList objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
        
        return cell;
    }
    
    //设置分区头视图
    
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
    {
        UIView *headerView = [[UIView alloc] initWithFrame:CGRectZero];
        headerView.backgroundColor = [UIColor lightGrayColor];
        UILabel *lineLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 43, self.view.frame.size.width, 3)];
        lineLabel.backgroundColor = [UIColor grayColor];
        [headerView addSubview:lineLabel];
        
        //加载图片
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 7, 32, 32)];
        if (sectionState[section]) {//收起的状态
            imageView.image = [UIImage imageNamed:FoldImageName];
        }
        else
        {
            imageView.image = [UIImage imageNamed:SpreadImageName];
        }
        [headerView addSubview:imageView];
        
        //添加点击手势
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick:)];
        tap.numberOfTapsRequired  = 1;
        tap.numberOfTouchesRequired = 1;
        headerView.userInteractionEnabled = YES;
        [headerView addGestureRecognizer:tap];
        //tag值
        headerView.tag = section;
        
        return headerView;
    }
    //0000 0000  ==0
    //0000 0001 ^
    //-----------
    //0000 0001  ==1
    
    //0000 0001  ==1
    //0000 0001 ^
    //-----------
    //0000 0000  ==0
    
    - (void)tapClick:(UITapGestureRecognizer *)tap
    {
        NSLog(@"-------");
        NSInteger index = tap.view.tag;
        sectionState[index] ^=1;
        [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:index] withRowAnimation:UITableViewRowAnimationFade];
    }
    
    
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    {
        return 46;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        [self creatData];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    
    //  AppDelegate.m
    //  UI2_QQ折叠-UITableViewController
    //
    //  Created by zhangxueming on 15/7/15.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "AppDelegate.h"
    #import "CustomUITableViewController.h"
    
    @interface AppDelegate ()
    
    @end
    
    @implementation AppDelegate
    
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        CustomUITableViewController *root = [[CustomUITableViewController alloc] init];
        UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:root];
        self.window.rootViewController = nav;
        self.window.backgroundColor = [UIColor whiteColor];
        
        return YES;
    }
    
  • 相关阅读:
    #Markdown 如何绘制 mermaid 复杂 graph
    Solon 1.7.6 发布,轻量级的应用开发框架
    发现一个很好的 Solon 框架试手的教学视频(Solon,轻量级应用开发框架)
    Solon 1.8.0 发布,云原生微服务开发框架
    [源码解析] TensorFlow 分布式之 ParameterServerStrategy V2
    [源码解析] TensorFlow 分布式之 ClusterCoordinator
    服务治理:常用限流算法总结
    服务治理:几种开源限流算法库/应用软件介绍和使用
    碎碎念软件研发02:敏捷之Scrum
    碎碎念软件研发01:敏捷简史和几种软件开发模型
  • 原文地址:https://www.cnblogs.com/0515offer/p/4649142.html
Copyright © 2020-2023  润新知