У меня есть пользовательский класс UITableViewCell, модельный объект которого выполняет асинхронную загрузку изображения, которое должно отображаться в ячейке. Я знаю, что у меня есть порты, подключенные должным образом в IB для WidgetTVC, я знаю, что данные изображения правильно возвращаются с моего сервера, и я также выделяю/init'd widget.logo UIImage. Почему изображение всегда пустое, а затем в моем TableViewCell? Заранее спасибо.Пользовательский UITableViewCell imageView не обновляется после setImage
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
Widget *theWidget = [widgetArray objectAtIndex:indexPath.row];
static NSString *CellIdentifier = @"WidgetCell";
WidgetTVC *cell = (WidgetTVC*)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"WidgetTVC" owner:self options:nil];
cell = self.widgetTVC;
self.widgetTVC = nil;
}
[cell configureWithWidget:theWidget];
return cell;
}
В моем классе WidgetTVC, у меня есть следующий метод:
- (void)configureWithWidget:(Widget*)aWidget {
self.widget = aWidget;
self.nameLbl.text = aWidget.name;
[self.logoIvw setImage:aWidget.logo]; // logoIvw is the image view for the logo
}
финально Я получил метод обратного вызова, который устанавливает свойство логотип UIImage на модели объекта Widget асинхронно (упрощенный):
(void)didReceiveImage:(ASIHTTPRequest *)request {
// I pass a ref to the Widget's logo UIImage in the userInfo dict
UIImage *anImage = (UIImage*)[request.userInfo objectForKey:@"image"];
UIImage *newImage = [UIImage imageWithData:[request responseData]];
anImage = newImage;
}
Должен ли я передавать указатель на указатель в userInfo, чтобы класс async мог заполнить значение UIImage? –
Думаю, мне может потребоваться больше кода, чтобы ответить на этот вопрос. Ваш комментарий над заключительным фрагментом кода говорит «метод обратного вызова, который задает свойство UIImage логотипа на объекте модели Widget» - но я не вижу ничего, что могло бы установить свойство логотипа на что-либо в этом методе. Я не знаком с ASIHTTPRequest, поэтому я могу ошибаться, но весь этот метод кажется полностью пассивным, т. Е. Он ничего не делает. Но вы написали «(упрощенный)» над ним, поэтому, возможно, нам нужно увидеть больше кода. – Echelon