2016-03-31 17 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]; 

}

、メインビューコントローラでIは、initメソッドの "LabelArray" という名前のNSMutableArrayの中のすべてのデータ

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]; 

私の問題は、このビューを読み込むと時間がかかることですロードして、私のテキストとimages.Howを含むすべてのデータを表示するので、私のテーブルビューをロードする時間が少なくなるようにイメージをプリロードできますか?

答えて

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

関連する問題