2013-11-02 3 views
1

Я использую API и необходимо отрегулировать высоту UITableViewCell на основе высоты изображения.Высота ячейки ячейки на основе размера изображения

Мой if заявление должно быть:

  • если нет изображения, то установить высоту до 140, еще ...
  • если Thereis изображение затем установить высоту до 106 + ImageHeight

Возможно, мне кажется, что это не работает, никаких идей?

Будет ли добавлен дополнительный код по мере необходимости, спасибо!

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
Feed *feedLocal = [headlinesArray objectAtIndex:indexPath.row]; 
if ([feedLocal.images count] == 0) { 
     return 140; 
    } 
else { 
     Images *image = [feedLocal.images objectAtIndex:0]; 
     NSString *imageHeight = [NSString stringWithFormat:@"%@", image.height]; 
     return 106 + imageHeight; 
    } 

Я получаю сообщение об ошибке на return 106 + imageHeight;, который говорит «Арифметика на указатель на интерфейс„NSString“, который не является величиной постоянной для данной архитектуры и платформы», и сбоев приложений, когда она попадает, что пятно.

EDIT: Содержимое массива (JSON из API)

"feed": [{ 
     "headline": "xxx", 
     "lastModified": "xxxx", 
     "images": [{ 
      "height": 300, 
      "alt": "xxx", 
      "width": 300, 
      "name": "xxx", 
      "caption": "xxx", 
      "url": "http://xxx.jpg" 
     }], 

Images.h

@property (nonatomic, strong) NSNumber *height; 
@property (nonatomic, strong) NSNumber *width; 
@property (nonatomic, strong) NSString *caption; 
@property (nonatomic, strong) NSString *url; 

+ (RKObjectMapping *) mapping; 

Images.m

+ (RKObjectMapping *)mapping { 
    RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[self class] usingBlock:^(RKObjectMapping *mapping) { 
     [mapping mapKeyPathsToAttributes: 
     @"height", @"height", 
     @"width", @"width", 
     @"caption", @"caption", 
     @"url", @"url", 
     nil]; 
    }]; 

    return objectMapping; 
} 
+0

Почему вы пытаетесь добавить строку в число? И что такое image.height? UIImage не имеет свойства высоты. – rdelmar

+0

@rdelmar благодарит за отзыв! Предполагается, что «image.height» получает высоту от ответа «Feed» JSON. Я новичок в этом, поэтому я не уверен, ответил ли это на ваш вопрос, я не делаю что-то правильно, но я не знаю, что это такое. – Realinstomp

+0

Я уверен, что мне нужно добавить число до 106, так что я могу преобразовать 'imageHeight' в число? Или я думаю об этом неправильно? – Realinstomp

ответ

1

Вы пытаетесь вернуть добавление числа со строкой. Вместо этого используйте:

Images *image = [feedLocal.images objectAtIndex:0]; 
    CGFloat imageHeight = image.size.height; 
    return 106 + imageHeight; 
+0

Спасибо за ответ, я на самом деле попытался это сделать, но попал на ошибку во второй строке «Свойство' размер »не найдено по типу объекта« Изображения ». вполне понятно, почему это так? – Realinstomp

+0

У вас есть свой собственный размер класса? feedLocal.images содержит изображения? Изображения являются подклассом класса UIImage? – RFG

+0

feedLocal.images - это массив, в котором есть высота и ширина. Это то, что вы спросите о? Спасибо – Realinstomp

1

вы пробовали этот код?

else { 

    Images *image = [feedLocal.images objectAtIndex:0]; 
    return 106+image.size.height; 

} 
+0

Спасибо за ответ! Я пробовал это на самом деле, и это дает мне ошибку, что свойство 'size' не найдено на объекте типа' Images' – Realinstomp

+0

Не мог бы вы показать код для класса Images? – RFG

+0

Добавлен класс массива и изображений выше – Realinstomp

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