How to programmatically increase UITableView cell's height in iPhone?
ios, iphone, objective-c, uitableview
Solution
First of all take a `bool` & `int` variable.
BOOL isReadMoreButtonTouched = NO;
int indexOfReadMoreButton = -1;
Then Implement below with your code
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
[[cell btnReadmore] setTag:[indexPath row]];
if(isReadMoreButtonTouched && [indexPath row]== indexOfReadMoreButton)
{
// design your read more label here
}
}
Now implement IBAction
-(IBAction) funReadmore:(id)sender
{
UIButton *readMoreButton = (UIButton *)sender;
indexOfReadMoreButton=[readMoreButton tag];
isReadMoreButtonTouched=YES;
[[self tableView] beginUpdates];
[[self tableView] reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForItem: indexOfReadMoreButton inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic];
[[self tableView] endUpdates];
}
Now Come to `heightForRowAtIndexPath`
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(isReadMoreButtonTouched && [indexPath row]== indexOfReadMoreButton) return 200.0f;
else return 100.0f;
}
Hope it'll work for you.
Problem
I having the separate custom `UITableViewCell` for displaying the data(these data come from server JSON response).In each `UITableViewCell` i am having button as read more.If the user clicks read more button i want to programmatically add `UILabel` for displaying additional information from server.But initially i set `UITableViewCell` height so after clicking read more button i cant able to see the additional inforamtion `UILabel`.. This is the screen shot: This is my required screen: This is the following coding i used: ``` -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { int height1; if(readMore){ height1=200; NSLog(@"Clicked"); } else{ height1=100; NSLog(@"Not clicked"); } return height1; // Normal height } -(NSInteger) tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section { return [TitleArr count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { static NSString *simpleTableIdentifier = @"SimpleTableCell_iPad"; cell = (TableCell_Leads *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; } else{ static NSString *simpleTableIdentifier = @"TableCell_Leads"; cell = (TableCell_Leads *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; } if (cell == nil) { if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell_iPad" owner:self options:nil]; cell = [nib objectAtIndex:0]; } else{ NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableCell_Leads" owner:self options:nil]; cell = [nib objectAtIndex:0]; } } cell.labTitle.text = [TitleArr objectAtIndex:indexPath.row]; cell.labCategory.text=[CategoryArr objectAtIndex:indexPath.row]; [cell.btnReadmore addTarget:self action:@selector(funReadmore:) forControlEvents:UIControlEventTouchUpInside]; return cell; } - (IBAction)funReadmore:(id)sender { [self.tableView beginUpdates]; readMore=TRUE; NSLog(@"READ MORE"); [self.tableView endUpdates]; } ```