TableView下拉cell

效果如下:

源码如下:

  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 ()<UITableViewDataSource,UITableViewDelegate>
 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

核心代码:

时间: 2024-08-28 02:16:09

TableView下拉cell的相关文章

TableView下拉表头放大 导航栏颜色透明度随着TableView偏移量渐变

TableView 下拉表头放大 导航栏颜色透明度随着TableView偏移量渐变 用storeboard 布局,之前尝试在storeboard中设置tableview的表头,但是那样弄出来的效果 表头不贴着上面,后来改成storeboard和代码 结合,最后实现的这个效果 下载链接: https://github.com/ShaoWenLe/TableViewThe-drop-down-amplification.git import UIKit let KScreen_Width = UIS

tableView下拉距离限制

项目中使用了tableView的下拉加载历史记录功能.其中一个逻辑是这样的:手撒开后,tableView会反弹回顶部,为了让cell复用没问题,设置延迟更新数据源.因为如果在手撒开tableView未反弹时就更新数据源,那么界面最下方的cell数据会根据新数据源来设置,导致错误.这个"延迟"的时间必须保证tableView能及时的反弹回顶部.后来发现设置这个时间并不是多么保险,因为我们无法保证用户下拉tableView的距离有多远,这决定了tableView反弹回顶部用的时间.所以干脆

iOS tableView下拉图片放大

事实上这个效果,本质上就是在你tableView下拉 造成offset时候. 保持你顶部图片的y坐标点还停留在下拉时屏幕的顶点(offset), 而图片的长度变为原始的height长度-(offset ) 就达到了下拉放大的效果. 直接上代码了: 1. 首先创建一个UIView作为headerView _topView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,MCAPPWidth,80)]; _tableView.tableHeaderView

iOS实现tableView下拉搜索功能

iOS实现tableView下拉搜索功能 地址:github地址 效果展示 JRSearchBar /// 搜索 -> array - (NSMutableArray *)searchTest:(NSString *)searchText InArray:(NSArray *)array;

tableView下拉图片放大

其实这个效果,本质上就是在你tableView下拉 造成offset时候, 保持你顶部图片的y坐标点还停留在下拉时屏幕的顶点(offset), 而图片的长度变为原始的height长度-(offset ) 就达到了下拉放大的效果. 直接上代码了: 1. 首先创建一个UIView作为headerView _topView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, MCAPPWidth, 80)]; _tableView.tableHeaderVi

利用UIRefreshControl实现tableView下拉刷新

- (void)viewDidLoad { [super viewDidLoad]; // 此处的self->ViewController继承于UITableViewController UIRefreshControl *refresh = [[UIRefreshControl alloc] initWithFrame:CGRectZero]; refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"下

IOS控件 Tableview 下拉刷新,加载数据

一. 点击此连链接下载资源文件,将EGORefreshTableHeaderView.h.EGORefreshTableHeaderView.m两个文件,以及Enormego提供的那一套图片包拖进你的工程里. 二.找到你的  UITableViewController 的 .h 文件,添加相应的代码: #import "EGORefreshTableHeaderView.h" @interface RootViewController : UITableViewController {

实现tableview的下拉刷新

实现tableview的下拉刷新 推荐第三方下拉刷新代码http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 tableview滑动就会触发这个方法? -(void)tableView:(UITableView *)tableView willDisplayCell:(UI

猫猫学iOS之tableView的下拉放大图片的方法

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 tableview下拉的时候上部分图片放大会 二:代码 直接上代码,自己研究吧 #import "NYViewController.h" //图片的高度 const CGFloat NYTopViewH = 350; @interface NYViewController () @property (nonatomic, weak) UIIm