程序员人生 网站导航

iOS tableViewCell点击后显示下拉菜单

栏目:互联网时间:2014-10-10 08:00:01

//


1、具体的实现思路  就是 单机一个cell 的时候 在当前cell下在添加一个自己定义好的Cell,话不多说  代码如下,具体的过程从代码中去体会吧 本代码是从一个NT 的demo上整理出来的。


//  DDIUICtrl_Message.m

//  DDInsurance

//

//  Created by LeeYunHeNB on 14-9-26.

//  Copyright (c) 2014 XinMaHuTong. All rights reserved.

//


#import "DDIUICtrl_Message.h"

#import "DDIUICtrl_messageCell.h"

#import "DDUICtrl_menuCell.h"

@interface DDIUICtrl_Message ()


@property (weak, nonatomic) IBOutlet UITableView *my_tableView;

@property (nonatomic, strong) NSMutableArray *dataArray;

@property (assign)BOOL isOpen;

@end


@implementation DDIUICtrl_Message


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

    }

    return self;

}


- (void)viewDidLoad

{

    [super viewDidLoad];

    [self setTitle:@"我的消息"];

    [self setLeftButtonText:@"" andBackground:[UIImage imageNamed:@"btn_back"]];

    NSDictionary *dic = @{@"Cell": @"MainCell",@"isAttached":@(NO)};

    NSArray * array = @[dic,dic,dic,dic,dic,dic];

    

    self.dataArray = [[NSMutableArray alloc]init];

    self.dataArray = [NSMutableArray arrayWithArray:array];

    

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    

    // Return the number of rows in the section.

    return self.dataArray.count;;

}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    

    // Return the number of sections.

    return 1;

}

// tableViewCell

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    if ([[self.dataArray[indexPath.row] objectForKey:@"Cell"] isEqualToString:@"MainCell"])

    {

        

        static NSString *CellIdentifier = @"MainCell";

        

        DDIUICtrl_messageCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        

        

        if (cell == nil) {

            cell = [[DDIUICtrl_messageCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

            

            cell.selectionStyle = UITableViewCellSelectionStyleGray;

        }

//        cell.Headerphoto.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",indexPath.row%4+1]];

        

        return cell;

        

    }else if([[self.dataArray[indexPath.row] objectForKey:@"Cell"] isEqualToString:@"AttachedCell"]){

        

        static NSString *CellIdentifier = @"AttachedCell";

        

        DDUICtrl_menuCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        

        

        if (cell == nil) {

            cell = [[DDUICtrl_menuCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

            

            cell.selectionStyle = UITableViewCellSelectionStyleNone;

        }

        

        return cell;

        

    }

    

    return nil;

}

// tableView点击事件

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    

    NSIndexPath *path = nil;

    

    if ([[self.dataArray[indexPath.row] objectForKey:@"Cell"] isEqualToString:@"MainCell"]) {

        path = [NSIndexPath indexPathForItem:(indexPath.row+1) inSection:indexPath.section];

    }else{

        path = indexPath;

    }

    

    if ([[self.dataArray[indexPath.row] objectForKey:@"isAttached"] boolValue]) {

        // 关闭附加cell

        NSDictionary * dic = @{@"Cell": @"MainCell",@"isAttached":@(NO)};

        self.dataArray[(path.row-1)] = dic;

        [self.dataArray removeObjectAtIndex:path.row];

        

        [self.my_tableView beginUpdates];

        [self.my_tableView deleteRowsAtIndexPaths:@[path]  withRowAnimation:UITableViewRowAnimationMiddle];

        [self.my_tableView endUpdates];

        

    }else{

        // 打开附加cell

        NSDictionary * dic = @{@"Cell": @"MainCell",@"isAttached":@(YES)};

        self.dataArray[(path.row-1)] = dic;

        NSDictionary * addDic = @{@"Cell": @"AttachedCell",@"isAttached":@(YES)};

        [self.dataArray insertObject:addDic atIndex:path.row];

        

        

        [self.my_tableView beginUpdates];

        [self.my_tableView insertRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationMiddle];

        [self.my_tableView endUpdates];

        

    }

    

    

}

@end




------分隔线----------------------------
------分隔线----------------------------

最新技术推荐