Gypsa
Gypsa

Reputation: 11314

How to insert a customized row below a row that is tapped

I am developing a project in which there is one requirement that in a table view when I tapped a row there should be one row added below that row and also I want that row to be customized as I want to add a text view in that row. Please tell me how can I do this. Any suggestions would be highly appreciated.

My current code:-

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell;

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];`


    if (cell == nil) {
            cell = [self reuseTableViewCellWithIdentifier:CellIdentifier withIndexPath:indexPath];
        }
    UIImageView *imgViewBackground=(UIImageView *)[cell.contentView viewWithTag:20];
    UIImageView *imgView=(UIImageView *)[cell.contentView viewWithTag:21];
    UILabel *label1=(UILabel *)[cell.contentView viewWithTag:22];
    UILabel *label2=(UILabel *)[cell.contentView viewWithTag:23];
    UILabel *label3=(UILabel *)[cell.contentView viewWithTag:24];
    [imgViewBackground setImage:[UIImage imageNamed:@"bba3.png"]
    [imgView setImage:[UIImage imageNamed:@"picdefault.png"]];
        [label1 setText:[self.usernameArray objectAtIndex:indexPath.row]];
    [label2 setText:[NSString stringWithFormat:@"%@",[self.level1Array objectAtIndex:indexPath.row]]];
    [label3 setText:[self.ageArray objectAtIndex:indexPath.row]]];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;//to remove blu selection color
    return cell;
}

-(UITableViewCell *)reuseTableViewCellWithIdentifier:(NSString *)identifier withIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell =[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:identifier]autorelease];
    if ([identifier isEqualToString:@"Cell"]) {
    UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(10, 0, 300, 98)];
    imageView.tag=20;
    [imageView setImage:[UIImage imageNamed:@"bba2.png"]];
    [cell.contentView addSubview:imageView];
    [imageView release];

    UIImageView *imagePicView=[[UIImageView alloc]initWithFrame:CGRectMake(25, 20, 60, 60)];
    imagePicView.tag=21;
    [cell.contentView addSubview:imagePicView];
    [imagePicView release];


    UILabel *namelabel=[[UILabel alloc]initWithFrame:CGRectMake(90, 20, 200, 20)];
    namelabel.backgroundColor=[UIColor clearColor];
    namelabel.font=[UIFont systemFontOfSize:15];
    namelabel.tag=22;
    [namelabel setTextAlignment:UITextAlignmentLeft];
    [namelabel setTextColor:[UIColor blackColor]];
    [cell.contentView addSubview:namelabel];
    [namelabel release];

    UILabel *activitylabel=[[UILabel alloc]initWithFrame:CGRectMake(90, 40, 200, 20)];
    activitylabel.backgroundColor=[UIColor clearColor];
    activitylabel.font=[UIFont italicSystemFontOfSize:14];
    activitylabel.tag=23;
    [activitylabel setTextAlignment:UITextAlignmentLeft];
    [activitylabel setTextColor:[UIColor darkGrayColor]];
    [cell.contentView addSubview:activitylabel];
    [activitylabel release];

    UILabel *agelabel=[[UILabel alloc]initWithFrame:CGRectMake(90, 60, 200, 20)];
    agelabel.backgroundColor=[UIColor clearColor];
    agelabel.font=[UIFont systemFontOfSize:13];
    agelabel.tag=24;
    [agelabel setTextAlignment:UITextAlignmentLeft];
    [agelabel setTextColor:[UIColor darkGrayColor]];
    [cell.contentView addSubview:agelabel];
    [agelabel release];

    }


    return cell;

}

Upvotes: 0

Views: 176

Answers (1)

Look at the WWDC 2011 developer video for UITableView changes and tips - in there they describe how to do exactly that. Sadly there's not been any sample code I've ever been able to find, but they document the approach pretty well in the talk.

Upvotes: 1

Related Questions