在敲击细胞时扩增细胞

时间:2013-12-24 06:53:49

标签: ios xcode

我正在使用tableview并与之合作。但我卡在一个我想要敲击细胞的地方,在细胞上,细胞应该扩大它的高度,并且它下面的细胞应该根据扩大的高度向下移动。 我正在使用的代码如下。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    [cell.textLabel setNumberOfLines:0]; // unlimited number of lines
    gratitude *grat = [gratitude_list objectAtIndex:indexPath.row];
    cell.textLabel.text=grat.gratitude;
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    [cell.textLabel setFont:[UIFont fontWithName:@"Lucida Sans" size:20]];
    return cell;
}  

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    gratindex > -1;

    if (gratindex == indexPath.row) {
        [self collapseSubItemsAtIndex:indexPath];
        gratindex = -1;
    }
    else {

        BOOL shouldCollapse = gratindex > -1;

        if (shouldCollapse) {
            [self collapseSubItemsAtIndex:gratindex];
        }

        gratindex = (shouldCollapse && indexPath.row > gratindex) ? indexPath.row - [[gratitude_list objectAtIndex:gratitude_list] count] : indexPath.row;

        [self expandItemAtIndex:gratitude_list];
    }

     [self.gratitude_tableview endUpdates];


}
- (void)expandItemAtIndex:(int)index
{

     NSMutableArray *indexPaths = [NSMutableArray new];
     int insertPos = index + 1;
     for (int i = 0; i < [gratitude_list count]; i++) {
     [indexPaths addObject:[NSIndexPath indexPathForRow:insertPos++ inSection:0]];
}
    [self.gratitude_tableview insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
     [self.gratitude_tableview scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
- (void)collapseSubItemsAtIndex:(int)index {
    NSMutableArray *indexPaths = [NSMutableArray new];
    for (int i = index + 1; i <= index + [[gratitude_list objectAtIndex:index] count]; i++) {
        [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]];
    }
    [self.gratitude_tableview deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];

}

请帮助我,如果我使用错误的approch请帮助我。

1 个答案:

答案 0 :(得分:0)

请检查我的answer。如果您需要更多细节,那么您可以在评论中询问我。

<强>更新: 在.h文件中的AND

@interface tableViewDemoViewController : UITableViewController
{
    NSIndexPath *selectedCellIndexPath;
    BOOL clickedAgain;
    int heights;
}

在.m文件中

#import "tableViewDemoViewController.h"

@interface tableViewDemoViewController ()

@end

@implementation tableViewDemoViewController

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    clickedAgain = YES;
    heights =0;

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
#warning Incomplete method implementation.
    // Return the number of rows in the section.
    return 15;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Configure the cell...
    cell.textLabel.text = [NSString stringWithFormat:@"This is cell %d",indexPath.row ];

    return cell;
}

/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
*/


#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:NO];
    if ([selectedCellIndexPath compare:indexPath] == NSOrderedSame && !clickedAgain)
    {
        heights =40;
        clickedAgain =YES;
    }
    else
    {
        heights =80;
        clickedAgain = NO;

    }

    [tableView beginUpdates];
     selectedCellIndexPath = indexPath;
    [tableView endUpdates];
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if(selectedCellIndexPath != nil
       && [selectedCellIndexPath compare:indexPath] == NSOrderedSame )
    {
        return heights;
    }

    return 40;
}  @end