热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TableView下拉cell

效果如下:源码如下:12MainViewController.m3NodeTableView45CreatedbyChenJungangon141110.6Copyright(c)


效果如下:
,

源码如下:

,,
  1 //
  2 //  MainViewController.m
  3 //  NodeTableView
  4 //
  5 //  Created by ChenJungang on 14/11/10.
  6 //  Copyright (c) 2014年 ChenJungang. All rights reserved.
  7 //
  8 
  9 #import "MainViewController.h"
 10 #import "MainCell.h"
 11 
 12 #define MAX_Count 55535
 13 
 14 
 15 @interface MainViewController ()
 16 
 17 @property (strong, nonatomic) UITableView   *tableView;
 18 @property (strong, nonatomic) NSArray       *dataArray;
 19 @property (assign, nonatomic) NSInteger     rowCount;
 20 @property (assign, nonatomic) NSInteger     sectionCount;
 21 
 22 @end
 23 
 24 @implementation MainViewController
 25 
 26 - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
 27     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
 28     if (self) {
 29         // Custom initialization
 30         self.rowCount = 0;
 31         self.sectiOnCount= MAX_Count;
 32     }
 33     return self;
 34 }
 35 
 36 - (void)viewDidLoad {
 37     [super viewDidLoad];
 38     self.title = @"node tableView";
 39     [self.view addSubview:self.tableView];
 40 }
 41 -(NSArray*)dataArray {
 42     if (!_dataArray) {
 43         self.dataArray = @[@{@"array": @[@{@"name":@"11", @"position":@"position1"},
 44                                          @{@"name":@"12", @"position":@"position2"},
 45                                          @{@"name":@"13", @"position":@"position3"},
 46                                          @{@"name":@"14", @"position":@"position4"},
 47                                          @{@"name":@"15", @"position":@"position5"}],@"name":@"one", @"position":@"position—one"},
 48                            @{@"array": @[@{@"name":@"21", @"position":@"position1"},
 49                                          @{@"name":@"22", @"position":@"position2"},
 50                                          @{@"name":@"23", @"position":@"position3"},
 51                                          @{@"name":@"24", @"position":@"position4"},
 52                                          @{@"name":@"25", @"position":@"position5"}],@"name":@"two", @"position":@"position—two"},
 53                            @{@"array": @[@{@"name":@"31", @"position":@"position1"},
 54                                          @{@"name":@"32", @"position":@"position2"},
 55                                          @{@"name":@"33", @"position":@"position3"},
 56                                          @{@"name":@"34", @"position":@"position4"},
 57                                          @{@"name":@"35", @"position":@"position5"}],@"name":@"three", @"position":@"position—three"},
 58                            @{@"array": @[@{@"name":@"41", @"position":@"position1"},
 59                                          @{@"name":@"42", @"position":@"position2"},
 60                                          @{@"name":@"43", @"position":@"position3"},
 61                                          @{@"name":@"44", @"position":@"position4"},
 62                                          @{@"name":@"45", @"position":@"position5"}],@"name":@"four", @"position":@"position—four"},
 63                            @{@"array": @[@{@"name":@"51", @"position":@"position1"},
 64                                          @{@"name":@"52", @"position":@"position2"},
 65                                          @{@"name":@"53", @"position":@"position3"},
 66                                          @{@"name":@"54", @"position":@"position4"},
 67                                          @{@"name":@"55", @"position":@"position5"}],@"name":@"five", @"position":@"position—five"}];
 68     }
 69     return _dataArray;
 70 }
 71 - (UITableView *)tableView{
 72     if (!_tableView) {
 73         CGRect rect = self.view.bounds;
 74         rect.origin.y = 0;
 75         rect.size.height = rect.size.height - rect.origin.y;
 76         _tableView = [[UITableView alloc]initWithFrame:rect style:UITableViewStylePlain];
 77         _tableView.delegate = self;
 78         _tableView.dataSource = self;
 79         _tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
 80     }
 81     return _tableView;
 82 }
 83 
 84 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
 85     return self.dataArray.count;
 86 }
 87 
 88 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
 89     if (_sectionCount != MAX_Count) {
 90         if (section == _sectionCount) {
 91             return 1 + _rowCount;
 92         }
 93         return 1;
 94     }else{
 95         return 1;
 96     }
 97 }
 98 
 99 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
100     static NSString *CellId = @"CellId";
101     MainCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
102     if (!cell) {
103         cell = [MainCell loadFromXib];
104     }
105     if (indexPath.row == 0) {
106         cell.nameLabel.text = self.dataArray[indexPath.section][@"name"];
107         cell.positionLabel.text = self.dataArray[indexPath.section][@"position"];
108     }else{
109         cell.nameLabel.text = self.dataArray[indexPath.section][@"array"][indexPath.row-1][@"name"];
110         cell.positionLabel.text = self.dataArray[indexPath.section][@"array"][indexPath.row-1][@"position"];
111     }
112     return cell;
113 }
114 
115 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
116 {
117     [tableView beginUpdates];
118     [tableView deselectRowAtIndexPath:indexPath animated:YES];
119     NSUInteger number =[self.dataArray[indexPath.section][@"array"]  count];
120     if (indexPath.row == 0) {
121         if(_sectiOnCount== MAX_Count){
122             _sectiOnCount= indexPath.section;
123             [self addCellwithNumber:number];
124         }else if (_sectiOnCount== indexPath.section) {
125             [self removeCellwithNumber:number];
126             _sectiOnCount= MAX_Count;
127         }else{
128             [self removeCellwithNumber:number];
129             _sectiOnCount= indexPath.section;
130             [self addCellwithNumber:number];
131         }
132     }
133     [tableView endUpdates];
134 }
135 
136 -(void)removeCellwithNumber:(NSInteger)number
137 {
138     for (int i=(int)number; i>=1; i--) {
139         --_rowCount;
140         [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:i inSection:_sectionCount]]
141                               withRowAnimation:UITableViewRowAnimationTop];
142     }
143     
144 }
145 -(void)addCellwithNumber:(NSInteger)number
146 {
147     for (int i=1; i<=number; i++) {
148         ++_rowCount;
149         [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:i inSection:_sectionCount]]
150                               withRowAnimation:UITableViewRowAnimationTop];
151     }
152 }
153 
154 - (void)didReceiveMemoryWarning {
155     [super didReceiveMemoryWarning];
156     // Dispose of any resources that can be recreated.
157 }
158 
159 @end
View Code

核心代码:

,

TableView下拉cell


推荐阅读
  • [TOC]Process的几个用法和守护进程一、Process的join用法话不多说,直接上代码二、Process的pid和ppid用法需要先导入os模块站在当前进程的角度:os. ... [详细]
  • 本文详细介绍了 KALDI 中 CUDA 矩阵库的使用与功能,包括其如何提高计算效率以及在不同环境下的适应性。 ... [详细]
  • 在一个大型的应用系统中,往往需要多个进程相互协作,进程间通信(IPC,InterProcessCommunication)就显得比较重要了。在Linux系统中,有很多种IPC机制, ... [详细]
  • Hibernate入门指南:单表数据库操作详解
    本文介绍了Hibernate作为全面的ORM框架的基础知识,并详细讲解了在MyEclipse环境中配置Hibernate以及进行基本的数据库单表操作的方法,包括增删改查等常见操作。 ... [详细]
  • 电子与正电子的相互作用
    本文探讨了电子与正电子之间的基本物理特性及其在现代物理学中的应用,包括它们的产生、湮灭过程以及在粒子加速器和宇宙射线中的表现。 ... [详细]
  • 程序运行时变量的生命周期与存储管理
    本文介绍了程序运行时环境中各种变量的生命周期及其存储空间管理。通过分析典型程序空间布局,探讨了数据区、代码区、堆区和栈区的功能与特性。此外,文章详细解析了局部变量与全局变量的区别,以及它们如何影响程序的性能和资源利用。 ... [详细]
  • 深入解析TCP的三次握手、四次挥手及路由器的三层转发机制
    本文详细探讨了OSI七层模型中的传输层,重点分析了TCP协议的连接建立(三次握手)和断开(四次挥手)过程,以及路由器如何在三层网络中实现数据包的高效转发。 ... [详细]
  • 深入理解CSS中position:relative与position:absolute的使用技巧
    在模仿设计一个在线商城页面时,我深入研究了CSS布局中的position属性,特别是relative和absolute两种定位方式的使用技巧和注意事项。本文总结了从CSDN博主onizukayao的文章中学到的关键点,并结合实际案例进行了详细解释。 ... [详细]
  • 本文探讨了缓存系统中的两个关键问题——缓存穿透与缓存失效时的雪崩效应,以及这些问题的解决方案。此外,文章还介绍了数据处理、数据库拆分策略、缓存优化、拆分策略、应用架构演进及通信协议的选择等内容。 ... [详细]
  • Codeforces Round #360 - The Values You Can Make
    题目描述:给定一组数字,首先选择一些子序列,使其和等于k;然后从所有和为k的子序列中再次选择子序列,计算这些子序列的和的所有可能值,并按升序输出。 ... [详细]
  • HTTP(超文本传输协议)是互联网上用于客户端和服务器之间交换数据的主要协议。本文详细介绍了HTTP的工作原理,包括其请求-响应机制、不同版本的发展历程以及HTTP数据包的具体结构。 ... [详细]
  • SQL Server中查询表结构与视图的方法,便捷高效
    本文介绍如何在SQL Server中轻松查询表结构和视图,提供简洁高效的SQL语句,特别适用于开发人员。 ... [详细]
  • 基于HoG和SVM的人体检测技术解析
    近期深入研究了使用HoG(梯度方向直方图)与SVM(支持向量机)进行人体检测的技术。通过阅读大量文献,特别是Dalal等先驱者的著作,我对HoG算法有了较为深刻的理解,并在此基础上探讨了如何将其应用于实际场景。 ... [详细]
  • TunnelWarfareTimeLimit:1000MS MemoryLimit:131072KTotalSubmissions:7307 ... [详细]
  • 微信小程序开发教程(二):利用AppId启动你的小程序
    上一节我们探讨了微信小程序的注册流程。本篇将深入介绍如何获取并使用AppId来创建微信小程序,为后续开发打下基础。 ... [详细]
author-avatar
TheKing小狼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有