3

I'd like to implement the new auto-resizing table view cells in iOS 8, while maintaining support for heightForRowAtIndexPath: in iOS 7. The problem is I have to remove the method override heightForRowAtIndexPath: for iOS 8, but keep in it for iOS 7. Is there some compile-time macro to use that will accomplish this?

Erich
  • 2,509
  • 2
  • 21
  • 24
  • I had the exact same problem. Here is my solution: [http://stackoverflow.com/questions/26022113/how-to-override-a-method-only-if-ios-version-earlier-thn-8/26022467#26022467][1] [1]: http://stackoverflow.com/questions/26022113/how-to-override-a-method-only-if-ios-version-earlier-thn-8/26022467#26022467 – amirfl Sep 24 '14 at 16:59

1 Answers1

3

You can not use a compile time macro because this is a run time decision. Instead, you can just return UITableViewAutomaticDimension for iOS 8 and if not, return your calculated height value.

#define IS_IOS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)

-(CGFloat) tableView: (UITableView * ) tableView heightForRowAtIndexPath: (NSIndexPath * ) indexPath {
  if (IS_IOS_8_OR_LATER)
    return UITableViewAutomaticDimension;
  else {
    //Your iOS 7 code here.
  }

}
batu
  • 645
  • 3
  • 10