2016-02-15 2 views
1

Я пытаюсь загрузить изображение в ячейку таблицы, в первый раз изображение не отображается, но если я обновляю таблицу (используя управление обновлением) и перезагружаю данные и изображение прекрасно отображается.Изображение не загружалось в ячейку - IOS

** я загружаю изображение в основной поток, и я использую пользовательскую ячейку

UIImage *image = //load image, it always return a value, never nil 

if(image != nil){ 
    self.iconCell.contentMode = UIViewContentModeScaleAspectFill; 
    self.iconCell.clipsToBounds = YES; 
    self.iconCell.image = image; 

    [self.iconCell setNeedsDisplay]; 
} 

, что может быть корнем этой проблемы?

+0

показать код, как вы загружаете изображение в ячейку таблицы представления ... –

+0

@MichaelDautermann Я обновляю вопрос. – BlaShadow

+0

'iconCell' - пользовательская ячейка. имеет ли это свойство 'image' или какое-либо другое свойство, которое указывает на представление изображения? –

ответ

0

Проблема заключалась в том, что я использую автоматическую компоновку, и в представлении не установлен установленный флажок для текущих измерений, которые я тестировал.

Installing and Uninstalling Views for a Size Class

0

Как часть вашей пользовательской ячейки представления таблицы, вы должны отслеживать, какую строку (или указательный путь) отображает ваша пользовательская ячейка.

E.G. добавить два свойства в пользовательской ячейке, как:

@property (strong) NSIndexPath *currentIndexPath; 
@property (weak) UITableView *parentTableView; // important, must be weak! 

И тогда вы можете установить его в «cellForIndexPath:» метод ваш взгляд контроллера, как:

- (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ... 
    ... 
    myCustomCell.currentIndexPath = indexPath; 
    myCustomCell.parentTableView = tableView; 

Теперь, в одной и той же функции, в которой вы обновить изображение в камере (и сразу после), вы можете перезагрузить одну ячейку, выполнив:

UIImage *image = //load image, it always return a value, never nil 

if(image != nil){ 
    self.iconCell.contentMode = UIViewContentModeScaleAspectFill; 
    self.iconCell.clipsToBounds = YES; 
    self.iconCell.image = image; 
} 

// reloading now should have the image properly set... 
NSArray *rowToReload = [NSArray arrayWithObject:self.currentIndexPath]; 
[self.parentTableView reloadRowsAtIndexPaths:rowToReload withRowAnimation:UITableViewRowAnimationNone]; 

Более подробную информацию можно увидеть in this related question.

+0

спасибо за ваш ответ, но это не сработало. – BlaShadow

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