iOS tableViewCell点击后显示下拉菜单

//

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


#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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值