iOS tableViewCell點擊後顯示下拉式功能表
//
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