2013-10-24 2 views
0

У меня проблема с приложением, которое я разрабатываю.UITableView неправильные изображения, загруженные пользовательской ячейкой и UIView

Я создал UITableView с пользовательскими ячейками. В ячейке я поместил немного UIView, чтобы показать изображение пользователя (загруженного из Data Core), используя метод bezierPathWithRoundedRect:

Когда я загружаю таблицу в приложение, изображения верны, пока я не сделаю быстрый прокрутку на стол. Я думаю, что есть проблема с асинхронной загрузкой/редактированием изображений, но я не знаю, как ее решить. Если я использую простой UIImageView в ячейке вместо UIView, все работает правильно. я нашел довольно подобные вопросы здесь, но ничего с классом UIView и Core Data загрузка ...

Это код для моей камеры:

- (UITableViewCell *)tableView:(UITableView *)presentTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *cellIdentifier = @"FellowshipCell"; 
    UITableViewCell *cell = [presentTableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    ExpenseParticipants *participant = [self.fetchedResultsController objectAtIndexPath:indexPath]; 

    IconView *icon = (IconView *)[cell.contentView viewWithTag:1]; 
    icon.immagine = [UIImage imageWithData:participant.usrImage]; 


    return cell; 
} 

И это реализация класса UIView (IconView.h и IconView.m) используются для рисования круглого прямоугольника с изображением пользователя:

- (void)drawRect:(CGRect)rect 
{ 
    // Draving code 
    UIBezierPath *icon = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:12]; 

    [[UIColor greenColor] setFill]; 
    UIRectFill(self.bounds); 

    [immagine drawInRect:self.bounds]; 
} 

Спасибо за помощь!

ответ

1

Попробуйте добавить [inmagine setNeedsDisplay], чтобы заставить перерисовать вашего пользовательского вида

+0

Большое спасибо! Это сработало! Я добавил [icon setNeedsDesplay]; перед возвратом ячейки. – DungeonDev

+0

Отлично! Примите ответ как правильный ответ – slecorne

+0

Выполнено. Извините за задержку :) Еще раз спасибо! – DungeonDev

0

Может быть, вы должны перераспределить в клетку, когда она равна нулю

UITableViewCell *cell = [presentTableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
if(cell==nil){ 
    cell = [[UITableView alloc] initWith...] 
} 
+0

Чтобы быть уверенным, я тоже добавил код. Спасибо :) – DungeonDev

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