2014-09-21 1 views
3

Я хотел бы реализовать новые ячейки отображения таблицы автоматического изменения размера в iOS 8, сохраняя при этом поддержку heightForRowAtIndexPath: в iOS 7. Проблема я должен удалить метод override heightForRowAtIndexPath: для iOS 8, но сохранить его в iOS 7. Есть ли какой-то макрос времени компиляции, который это выполнит?Внесите heightForRowIndexPath: в iOS 7, но удалите его в iOS 8 с помощью макроса времени компиляции

+0

У меня была такая же проблема. Вот мое решение: [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

ответ

3

Вы не можете использовать макрос времени компиляции, потому что это решение времени выполнения. Вместо этого вы можете просто вернуть UITableViewAutomaticDimension для iOS 8, а если нет, верните вычисленное значение высоты.

#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. 
    } 

} 
Смежные вопросы