iOS tableViewCell点击后显示下拉菜单

这篇博客介绍了如何在iOS应用中实现在tableViewCell被点击后展示下拉菜单的功能。通过创建自定义Cell并在点击事件中动态插入或删除行来实现菜单的展开和关闭。示例代码来自一个NT的Demo,涉及UITableView的代理方法和数据源更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//


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) IBOutletUITableView *my_tableView;

@property (nonatomic,strong) NSMutableArray *dataArray;

@property (assign)BOOL isOpen;

@end


@implementation DDIUICtrl_Message


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

{

   self = [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];

   if (self) {

        // Custom initialization

    }

    return self;

}


- (void)viewDidLoad

{

    [superviewDidLoad];

    [selfsetTitle:@"我的消息"];

    [selfsetLeftButtonText:@""andBackground:[UIImageimageNamed:@"btn_back"]];

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

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

    

   self.dataArray = [[NSMutableArrayalloc]init];

   self.dataArray = [NSMutableArrayarrayWithArray:array];

    

}


- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    // 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_messageCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifier];

            

            cell.selectionStyle =UITableViewCellSelectionStyleGray;

        }

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

        

       return cell;

        

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

        

       static NSString *CellIdentifier =@"AttachedCell";

        

       DDUICtrl_menuCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        

        

       if (cell == nil) {

            cell = [[DDUICtrl_menuCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifier];

            

            cell.selectionStyle =UITableViewCellSelectionStyleNone;

        }

        

       return cell;

        

    }

    

    return nil;

}

// tableView点击事件

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

    

    [tableView deselectRowAtIndexPath:indexPathanimated:YES];

    

   NSIndexPath *path = nil;

    

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

        path = [NSIndexPathindexPathForItem:(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.dataArrayremoveObjectAtIndex:path.row];

        

        [self.my_tableViewbeginUpdates];

        [self.my_tableViewdeleteRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationMiddle];

        [self.my_tableViewendUpdates];

        

    }else{

        // 打开附加cell

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

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

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

        [self.dataArrayinsertObject:addDic atIndex:path.row];

        

        

        [self.my_tableViewbeginUpdates];

        [self.my_tableViewinsertRowsAtIndexPaths:@[path]withRowAnimation:UITableViewRowAnimationMiddle];

        [self.my_tableViewendUpdates];

        

    }

    

    

}

@end






本人目前在研究web前端开发,买了一些视频,筛选出讲好的,自己在淘宝上出售:https://item.taobao.com/item.htm?id=540946716944(自己的淘宝店,请多多支持)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值