收录日期:2019/12/16 12:54:54 时间:2010-10-28 14:52:48 标签:iphone,objective-c,uitableview,uikit

I am trying to get variable-height table cells implemented and what I thought would be an elegant solution turned out into a recursion/stack overflow:

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

    MyCustomCell *cell = (MyCustomCell *)[aTableView cellForRowAtIndexPath:indexPath];

    return [cell heightForObject:...]; // passing data object on indexPath
}

All table cell labels and other view properties are initialized at creation time (in a usual tableView:cellForRowAtIndexPath: way). Thus my idea was that I could move height specific computing out of table controller to my custom cell implementation like this. I could use the same cell in other table controllers without little if any code duplication. heightForObject: could look at it's subviews, what fonts they are using and build that height value from that. Heck, I could even change font sizes for certain cell labels and they should theoretically update their height properly.

So as mentioned already - I am hitting that stack overflow issue with this code. How would I go of getting that target cell for which tableView:heightForRowAtIndexPath: is being called?

So you want to get the selected cell?

Then write:

UITableViewCell *actCell = [self.tableView cellForRowAtIndexPath:
                                           [self.tableView indexPathForSelectedRow]];