2016-03-31 105 views
1

我从服务器加载XML数据(包括图像,文本等),并通过tableview显示该数据。如何在ios中预加载图像

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
if([elementName isEqualToString:@"user_id"]) 
{ 
    Myxml.str_user_id = currentNodeContent; 
} 

else if([elementName isEqualToString:@"username"]) 
{ 
    Myxml.str_username = currentNodeContent; 

} 
else if([elementName isEqualToString:@"avatar"]) 
{ 
    Myxml.str_avatar=currentNodeContent; 
    Myxml.imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:currentNodeContent]]; 

} 
else if([elementName isEqualToString:@"full_name"]) 
{ 
    Myxml.str_full_name=currentNodeContent; 

} 
else if([elementName isEqualToString:@"cups"]) 
{ 
    Myxml.str_cups=currentNodeContent; 
} 
//--------Record End------- 
else if([elementName isEqualToString:@"record"]) 
{ 
    [RecordArray addObject:Myxml]; 
    [Myxml release]; 
    Myxml = nil;   
} 

[currentNodeContent release]; 
currentNodeContent = nil; 
currentNodeContent = [[NSMutableString alloc]init]; 

}

现在,在主视图控制器我收集在名为 “LabelArray” 的NSMutableArray所有数据在init方法

Connection=[[NetworkConnection alloc]initConnection]; 

if (Connection.isReachable) 
{ 
    XmlDetail=[[TopPickerXML alloc]init]; 

    LabelArray=[[NSMutableArray alloc]initWithArray:XmlDetail.RecordArray]; 
} 
else 
{ 
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Alert" message:@"Network connection unavailable..." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 

并且在的cellForRowAtIndexPath表视图,我显示这样的图像

img_BuddyAvtar=[[UIImageView alloc]init]; 
img_BuddyAvtar.frame=CGRectMake(10, 5, 120, 105); 
img_BuddyAvtar.image=[UIImage imageWithData:TopPicker_record.imageData]; 
img_BuddyAvtar.backgroundColor=[UIColor clearColor]; 
[View_TableCell addSubview:img_BuddyAvtar]; 

现在,我的问题是当我加载此视图需要时间加载,然后显示包括我的文本和图像的所有数据。如何预加载图像,以便加载我的表视图需要更少的时间?

回答

0

您应该必须缓存图像。

  1. 将SDWebImage添加到您的项目中。
  2. 进口<SDWebImage/UIImageView+WebCache.h>
  3. cellForItemAtIndexPath

    [cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"your image URL"] 
          placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
    
+1

添加以下代码将用于图像的循环此代码的工作? –

+0

是的,它会。你只需要传递URL和占位符图像。而已 :) – ivarun