iPhone學(xué)習(xí)之路 Table實(shí)現(xiàn)動(dòng)態(tài)加載圖片
iPhone學(xué)習(xí)之路 Table實(shí)現(xiàn)動(dòng)態(tài)加載圖片是本文要介紹的內(nèi)容,內(nèi)容不多,基于代碼實(shí)現(xiàn),我們一起來看內(nèi)容。
Iphone在加載列表時(shí),如果每個(gè)等待把所有列表中的數(shù)據(jù)都加載完在顯示相關(guān)內(nèi)容,如果列表中有一些比較大的圖片,加載的時(shí)間比較長,那么給用戶的效果就很差了,下面詳細(xì)是一種實(shí)現(xiàn)動(dòng)態(tài)加載圖片的辦法:
- - (UITableViewCell *)tableView:(UITableView *)tableView
- cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"tag"];
- if (cell==nil) {
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
- reuseIdentifier:@"tag"] autorelease];
- }
- //表格設(shè)計(jì)
- NSDictionary* one = [array objectAtIndex:indexPath.row];
- cell.textLabel.text = [one objectForKey:@"title"];
- cell.detailTextLabel.text = [one objectForKey:@"content"];
- [NSThread detachNewThreadSelector:@selector(updateImageForCellAtIndexPath:) toTarget:self withObject:indexPath];
- return cell;
- }
- - (void)updateImageForCellAtIndexPath:(NSIndexPath *)indexPath
- {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- UIImage *image = [self getImageForCellAtIndexPath:indexPath];
- UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
- [cell.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];
- [image release];
- [pool release];
- }
- -(UIImage *)getImageForCellAtIndexPath:(NSIndexPath *)indexPath
- {
- id path = [[array objectAtIndex:indexPath.row] objectForKey:@"image"];
- NSURL *url = [NSURL URLWithString:path];
- NSData *data = [NSData dataWithContentsOfURL:url];
- UIImage *image = [[UIImage alloc] initWithData:data cache:NO];
- return image;
- }
源代碼:http://easymorse-iphone.googlecode.com/svn/trunk/WelcomePavilion/
小結(jié):iPhone學(xué)習(xí)之路 Table實(shí)現(xiàn)動(dòng)態(tài)加載圖片的內(nèi)容介紹完了,希望本文對你有所幫助!
本文來自:http://wangjun.easymorse.com/?p=908