how to obtain the UITableViewCell within heightForRowAtIndexPath?

Greg picture Greg · Mar 10, 2011 · Viewed 31.6k times · Source

How does one obtain the UITableViewCell when within the heightForRowAtIndexPath method, i.e. given the indexPath?

(then I could access the content views I have created to add their heights up)

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
  // How to get the UITableViewCell associated with this indexPath?
}

thanks

EDIT: In fact is there really a valid way to do this? When I put some NSLog statements it seems that heightForRowAtIndexPath it called several times before the calls to cellForRowAtIndexPath (which is where I set up the UILabels in the cell)? This kind implies that I may be tried to use a technique that will not work, i.e. I was hoping in heightForRowAtIndexPath to access the already created labels in each cell to get their heights and add them together for the overall cell row height, HOWEVER if they haven't been set up yet (within cellForRowAtIndexPath) then I guess my approach can't really work?

Answer

iosMentalist picture iosMentalist · Mar 31, 2014

You can use the tableview's delegate instead of the tableView itself.

id cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];

Check the answer here

UPDATED

In new iOS versions and using correct auto constraints you don't need to reference the cell anymore to calculate the cell's height.

Check here

https://www.raywenderlich.com/129059/self-sizing-table-view-cells