//
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