`
yidongkaifa
  • 浏览: 4060513 次
文章分类
社区版块
存档分类
最新评论

点击cell显示cell的细节

 
阅读更多

实现的功能:点击cell显示cell的详细信息,再次点击关闭cell的详细信息。

#import <UIKit/UIKit.h>


@interface MyCell : UITableViewCell
{
UILabel *lab_info;
UILabel *lab_detailInfo;
CGFloat normalHeight;
}
@property (retain,nonatomic)UILabel *lab_info,*lab_detailInfo;
@property CGFloat normalHeight;
-(CGFloat)getMyCellHeight;
-(void)resetCellHeight;

@end


#import "MyCell.h"
@interface MyCell()
{
}
@end
@implementation MyCell

@synthesize lab_info,lab_detailInfo;
@synthesize normalHeight;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {

lab_info=[[UILabel alloc]init];
[self.contentView addSubview:lab_info];
//
self.normalHeight=self.frame.size.height;
//
lab_detailInfo=[[UILabel alloc]init];
lab_detailInfo.lineBreakMode=NSLineBreakByCharWrapping;
lab_detailInfo.numberOfLines=5;
[self.contentView addSubview:lab_detailInfo];
//
self.layer.shadowColor=[UIColor blackColor].CGColor;
self.layer.shadowOffset=CGSizeMake(0, 2);
self.layer.shadowOpacity=0.3;
self.layer.shadowRadius=2;
//

}
return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
}
-(CGFloat)getDetailLabViewHeight
{
[self.lab_detailInfo sizeToFit];
return self.lab_detailInfo.frame.size.height;;
}
-(CGFloat)getMyCellHeight
{
return normalHeight +[self getDetailLabViewHeight];
}

-(void)resetCellHeight
{
[self layoutIfNeeded];
CGRect cellFrame=self.frame;
cellFrame.size.height=normalHeight+[self getDetailLabViewHeight];
[self setFrame:cellFrame];
}
-(void)layoutSubviews
{
[super layoutSubviews];
//设置标题的lab的高度
CGRect lab_info_Frame=CGRectInset(self.frame, 0, 0);
lab_info_Frame.origin.x=lab_info_Frame.origin.y=0;
lab_info_Frame.size.height=normalHeight;
[lab_info setFrame:lab_info_Frame];
//设置详细信息的高度
CGRect lab_detailInfo_Frame=CGRectInset(self.frame, 0, 0);
lab_detailInfo_Frame.origin.x=0;
lab_detailInfo_Frame.origin.y=normalHeight;
lab_detailInfo_Frame.size.height=[self getDetailLabViewHeight];
[lab_detailInfo setFrame:lab_detailInfo_Frame];
//
//[self setNeedsDisplay];
}
-(void)drawRect:(CGRect)rect
{
[super drawRect:rect];
self.contentView.backgroundColor=[UIColor grayColor];
lab_info.backgroundColor=[UIColor clearColor];
lab_detailInfo.backgroundColor=[UIColor clearColor];
}

@end

#import <UIKit/UIKit.h>
#import "MyCell.h"
@interface RootViewController : UITableViewController
{
NSMutableArray *isItemSelected;
}


@end


#import "RootViewController.h"

@implementation RootViewController


#pragma mark -
#pragma mark View lifecycle

- (void)viewDidLoad {
[super viewDidLoad];

isItemSelected=[[NSMutableArray alloc]initWithCapacity:5];
for (int i=0; i<5; i++)
{
[isItemSelected insertObject:[NSNumber numberWithBool:NO] atIndex:i];
}
}

#pragma mark -
#pragma mark Table view data source

// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}


// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 5;
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = (MyCell*)[[MyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
}

cell.lab_info.text=[NSString stringWithFormat:@"title-%d",indexPath.row];
cell.lab_detailInfo.text=[NSString stringWithFormat:@"subtitle-%d",indexPath.row];
if ([[isItemSelected objectAtIndex:indexPath.row]boolValue]==YES) {
cell.lab_detailInfo.hidden=NO;
}else{
cell.lab_detailInfo.hidden=YES;
}
return cell;
}

#pragma mark -
#pragma mark Table view delegate

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

MyCell *cell=(MyCell *)[self tableView:tableView cellForRowAtIndexPath:indexPath];
if ([[isItemSelected objectAtIndex:indexPath.row] boolValue]==YES) {
return [cell getMyCellHeight];
}
else
{
return cell.normalHeight;
}

}


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

BOOL b=[[isItemSelected objectAtIndex:indexPath.row]boolValue];
[isItemSelected replaceObjectAtIndex:indexPath.row withObject:[NSNumber numberWithBool:!b]];
//
[tableView reloadData];
// [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];


}

效果是这样的



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics