zoukankan      html  css  js  c++  java
  • 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
    View Code

    核心代码:

  • 相关阅读:
    SDN课程阅读作业(2)
    2019 SDN上机第5次作业
    第01组 Alpha事后诸葛亮
    Windows 7 64位安装cURL
    html 空白汉字占位符&#12288;
    申请一个免费美国手机号码
    搭建网站需要学习什么(转自知乎)
    Eclipse 项目有红感叹号
    CSS字体大小之em,px,百分比
    题目1013:开门人和关门人
  • 原文地址:https://www.cnblogs.com/ablettchen/p/4101287.html
Copyright © 2011-2022 走看看