TTImageView обновить изображение - PullRequest
1 голос
/ 24 декабря 2010

У меня есть следующий код

TTImageView* chart = [[[TTImageView alloc] initWithFrame:CGRectMake(2,2,30, 30)] autorelease]; 
chart.backgroundColor = [UIColor clearColor]; 
chart.defaultImage = nil; 
chart.urlPath = @"http://test.com/test.png"; 

И мне нужно обновить изображение, поэтому я вызываю функцию перезагрузки на графике.Однако график не обновляется.Я обнаружил, что TTURLCache кэширует изображение.Таким образом, в приложении делегата, когда приложение только началось, я делаю следующее:

[TTURLCache sharedCache].disableImageCache = YES; 
[[TTURLCache sharedCache] removeAll:YES];

Однако изображение все еще не обновляется.Любая помощь будет оценена.Я также понял, что всякий раз, когда я делаю [перезагрузка диаграммы] и проверяю [chart isLoading], это всегда верно, что означает, что запрос не отправляется каким-либо образом.

Ответы [ 3 ]

2 голосов
/ 24 декабря 2010

Добавьте повторный вызов после того, как вы установили URL и убедитесь, что вы звоните из основного потока

[chart reload];
1 голос
/ 24 августа 2011

Я столкнулся с подобной проблемой, когда попытался загрузить аватары своих пользователей в представление UIButton. Мне нужно было использовать протокол делегирования TTImageView для обновления изображения кнопки. Например:

self.avatarImageView              = [[TTImageView alloc] initWithFrame:CGRectMake(10, 10, 50, 50)];
self.avatarImageView.defaultImage = TTIMAGE(@"bundle://defaultAvatar.png");
self.avatarImageView.delegate     = self;
self.avatarImageView.urlPath      = @"http://www.site.com/path/to/image.png"

Как только urlPath установлен, запрос выполняется в фоновом режиме. Когда вы соответствуете TTImageViewDelegate, вы можете получить доступ к следующим методам делегата.

/**
 * Called when the image begins loading asynchronously.
 */
- (void)imageViewDidStartLoad:(TTImageView*)imageView {
    NSLog(@"loading image...");
}

/**
 * Called when the image finishes loading asynchronously.
 */
- (void)imageView:(TTImageView*)imageView didLoadImage:(UIImage*)image {
    NSLog(@"loaded image!");
    [self.avatarImageButton setImage:image forState:UIControlStateNormal];
}

/**
 * Called when the image failed to load asynchronously.
 * If error is nil then the request was cancelled.
 */
- (void)imageView:(TTImageView*)imageView didFailLoadWithError:(NSError*)error {
    NSLog(@"error loading image - %@", error);
}

Когда изображение успешно загрузилось, я могу использовать его для своей кнопки UIB, как вы увидите в методе imageView: didLoadImage.

Надеюсь, это поможет пролить свет на эту проблему. Я знаю, что это старый вопрос, но, возможно, это поможет другим позже.

0 голосов
/ 23 декабря 2011

После очистки кеша вы также должны сбросить TTImageView. Простой способ сделать это - вызвать [chart unsetImage], а затем снова установить urlPath. Еще один способ сделать это без очистки кэша - добавить фиктивный параметр в URL.

chart.urlPath = @"http://test.com/test.png?dummy=dummy"; 
...