2012-03-06 2 views
0

Я следил за кодами здесь https://stackoverflow.com/a/7212943/711837, чтобы я начал показывать индикатор моего приложения, пытающегося загрузить изображения с определенного веб-сайта. Сценарий:, показывающий прогресс на изображении на customcell на uitableview

У меня есть табличное представление со многими пользовательскими ячейками, пользовательские ячейки имеют 2 ярлыка и изображение. У меня есть NSURL, чтобы загрузить содержимое, которое заполнит ярлыки, а затем отдельный класс, который загрузит изображения, которые будут заполнены в UIImageView. Код для блесны и загрузка изображений являются:

resultArray = [[NSArray alloc] initWithArray:response]; 
[self downloadImageFromInternet:@"http://static.colourlovers.com/images/shapes/0/7/7090/50x50.png"]; 
//spinner for the download 
spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
spinner.frame = CGRectMake(0, 0, 24, 24); 
custcell.accessoryView = spinner; 
[spinner startAnimating]; 
///[spinner release]; 

[self.thetableView reloadData]; 

, а затем я называю [spinner stopAnimating] на финише метод скачивания класса, но так или иначе, прядильщики просто не анимировать, или появляются за дело! я что-то упускаю? или есть где-нибудь, на что я могу ссылаться? моя цель состоит в том, чтобы показать UIIndicatorView по месту UIImageView, а затем после загрузки изображение просматривается в том же положении, и это находится в каждой ячейке.

ОБНОВЛЕНО добавлены методы

-(void) downloadImageFromInternet:(NSString*)urlToImage{ 
    // Create a instance of InternetImage 
    asynchImage = [[DownloadThumb alloc] initWithUrl:urlToImage]; 

    // Start downloading the image with self as delegate receiver 
    [asynchImage downloadImage:self]; 
} 

-(void) internetImageReady:(DownloadThumb*)downloadedImage{ 
    // The image has been downloaded. Put the image into the UIImageView 
    [arrayImg addObject:downloadedImage.Image]; 
    [spinner stopAnimating]; 
    [self.thetableView reloadData]; 
} 

-(void)downloadImage:(id)delegate{ 
m_Delegate = delegate; 

NSURLRequest *imageRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:ImageUrl] 
               cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60.0]; 
imageConnection = [[NSURLConnection alloc] initWithRequest:imageRequest delegate:self]; 

if(imageConnection) 
{ 
    workInProgress = YES; 
    m_ImageRequestData = [[NSMutableData data] retain]; 
} 

}

+0

показать свой метод downloadImageFromInternet ... скорее всего, вы вызываете его на главном thread..which блокирует ваш пользовательский интерфейс для обновления – Shubhank

+0

'- (Недействительными) downloadImageFromInternet: (NSString *) urlToImage { \t // Создание экземпляра of InternetImage \t asynchImage = [[DownloadThumb alloc] initWithUrl: urlToImage]; \t \t // Начинаем загрузку изображения с себя как получателя делегата \t [asynchImage downloadImage: self]; } - (Недействительными) internetImageReady: (DownloadThumb *) downloadedImage {\t \t // Изображение было загружено. Поместите изображение в UIImageView \t [arrayImg addObject: скачаноImage.Image]; \t [поворотный выключательАнимация]; \t [self.thetableView reloadData]; } ' Последнее для того, когда данные загружаются – eddy

+0

как мне форматировать строки! : S – eddy

ответ

0

Вы действительно должны начать вертушку при создании ячейки.
Затем вы должны зарегистрироваться в cellForRowAtIndexPath, если он должен быть видимым или нет.
Наконец, когда вам нужно отобразить его, вы можете использовать [tableView reloadData] для его отображения или удаления.

+0

Я инициировал счетчик в CustomCell, и теперь вращатель поворачивается, затем в «cellForRowAtIndexPath», где я установил изображение в образе просмотра в ячейке и изменил альфу изображения на 1.0 (начато как 0.0) и остановил для счетчика, но это не остановит его ... я что-то упустил? я надеюсь, что вы получите то, что я пытаюсь сказать – eddy