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;
}
时间: 2024-10-11 09:21:17

UI2_QQ折叠-UITableViewController的相关文章

第一百八十九节,jQueryUI,折叠菜单 UI

jQueryUI,折叠菜单 UI 学习要点: 1.使用 accordion 2.修改 accordion 样式 3.accordion()方法的属性 4.accordion()方法的事件 5.accordion 中使用 on 折叠菜单(accordion),和选项卡一样也是一种在同一个页面上切换不同内容的功能 UI.它和选项卡的使用几乎没有什么太大区别,只是显示的效果有所差异罢了. 一.使用 accordion 使用 accordion 比较简单,但需要按照指定的规范即可. HTML 部分 <d

UI_10 表视图的编辑、UITableViewController

读取plist文件并将其内容显示到表视图上.并添加编辑(增加,删除).移动cell的操作. plist文件内容如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" " http://www.apple.com/DTDs/PropertyList-1.0.dtd ">

NetBeans自定义代码折叠块,类似vs中的#region

//<editor-fold defaultstate="collapsed" desc="测试代码折叠"> echo '<script type="text/javascript">'; echo "alert('当前类目下有文章,不能删除!');"; echo "history.go(-1)"; echo "</script>"; exit;//&

iOS7上在xib中使用UITableViewController设置背景色bug

今天用xcode5.1设置xib中,用静态的方式设置UITableViewController中的tableview,把tableview中的backgroundColor改变后,xib上有效果,但是一运行就变成了透明色,在过渡动画时,都可以看到背面的view!见下面截图 后来在viewdidload中设置一下就好了 self.tableView.backgroundColor = [UIColor blackColor]; 我感觉这是xcode的一个bug! 而且这种static的设置方式,如

控件中数据模板禁用小键盘减号折叠

WPF里面自定义了TreeListView控件,在树列表项的数据模板中添加了文本框,当在文本框内输入小键盘的减号时,自动折叠:因为小键盘+与-符号是自动折叠的:可以对win7及以上系统 的文件夹列表树,进行验证:为了禁止输入时不折叠,使用以下代码实现 <controls:TreeListView.Columns> <GridViewColumn Header="列头名称"> <DataTemplate> <TextBox Text="

jQuery 特效【文本框折叠隐藏,展开显示】

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server&quo

jQuery基础(常用插件 表单验证,图片放大镜,自定义对象级,jQuery UI,面板折叠)

1.表单验证插件--validate   该插件自带包含必填.数字.URL在内容的验证规则,即时显示异常信息,此外,还允许自定义验证规则,插件调用方法如下: $(form).validate({options}) 其中form参数表示表单元素名称,options参数表示调用方法时的配置对象,所有的验证规则和异常信息显示的位置都在该对象中进行设置.     2.表单插件--form 通过表单form插件,调用ajaxForm()方法,实现ajax方式向服务器提交表单数据,并通过方法中的option

amazeui折叠面板智能化展开

2016年12月12日 21:05:18 星期一 场景: 我拿这个组件用作管理后台的侧边栏 效果: 根据当前访问的url不同, 展开不同的面板 amazeui折叠面板 js代码: 1 <script type="application/javascript"> 2 var nowUrl = 'http://xxxx'; 3 var dls =document.getElementById("sidebar").getElementsByTagName(&

UITableViewController 滚动引起的cocos2d动画暂停问题的解决

UITableViewController 滚动引起的cocos2d动画暂停问题的解决 之前在使用UITableViewController进行滚动时,cocos2d的动画会暂停,直至滚动完毕才会继续动画. 后来发现可以这样解决,想要了解更多,请查阅NSRunLoop相关知识. // .h NSTimer* m_timer; // .m- (void)updateCCDirector { [[CCDirector sharedDirector] drawScene]; if (!self.tab