簡體   English   中英

從背景加載圖像

[英]Image loading from background

我正在后台加載圖像。 使用此代碼

-(void)backgroundImageLoading
{
    if(isGroupOrFriend)
    {
        NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];

        for(NSDictionary *d in m_kwikiArray)
        {
            NSMutableDictionary *dict=[NSMutableDictionary dictionary];
            if([d valueForKey:@"UserImage"]!=nil && ![[d valueForKey:@"UserImage"] isEqualToString:@""])
            {
                UIImage *img=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[d valueForKey:@"UserImage"]]]];
                if(img!=nil)
                    [dict setObject:img forKey:@"UserImage"];
            }
            else 
                [dict setObject:@"No Image" forKey:@"UserImage"];
            //if([d valueForKey:@"imagePath"]!=nil && ![[d valueForKey:@"imagePath"] isEqualToString:@""] )
            //          [dict setObject:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[d valueForKey:@"imagePath"]]]] forKey:@"imagePath"];
            //      else 
            //          [dict setObject:@"NO Image" forKey:@"imagePath"];
            if([[d valueForKey:@"Transactions"] count]>0)
            {
                if([[[d valueForKey:@"Transactions"] objectAtIndex:0] valueForKey:@"UserThumbnail"]!= nil && ![[[[d valueForKey:@"Transactions"] objectAtIndex:0]valueForKey:@"UserThumbnail"] isEqualToString:@""])
                {
                    UIImage *img1=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[[[d valueForKey:@"Transactions"] objectAtIndex:0] valueForKey:@"UserThumbnail"]]]];
                    if(img1!=nil)
                        [dict setObject:img1 forKey:@"UserThumbnail1"];
                }
                else 
                    [dict setObject:@"NOImage" forKey:@"UserThumbnail1"];
            }
            else 
                [dict setObject:@"NOImage" forKey:@"UserThumbnail1"];
            if([[d valueForKey:@"Transactions"] count]>1)
            {
                if([[[d valueForKey:@"Transactions"] objectAtIndex:1] valueForKey:@"UserThumbnail"]!=nil && ![[[[d valueForKey:@"Transactions"] objectAtIndex:1] valueForKey:@"UserThumbnail"] isEqualToString:@""])
                {
                    UIImage *img2=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[[[d valueForKey:@"Transactions"] objectAtIndex:1] valueForKey:@"UserThumbnail"]]]];
                    if(img2!=nil) 
                        [dict setObject:img2 forKey:@"UserThumbnail2"];
                }
                else 
                    [dict setObject:@"NOImage" forKey:@"UserThumbnail2"];
            }
            else 
                [dict setObject:@"NOImage" forKey:@"UserThumbnail2"];
            [imageForGruopAndFriendArray addObject:dict];

        }
        //isReloadTable=YES;
        [mTable reloadData];
        [pool release];
    }
    else 
    {
        NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];

        for(NSDictionary *d in m_kwikiArray)
        {
            NSMutableDictionary *dict=[NSMutableDictionary dictionary];
            if([d valueForKey:@"Illustration"]!=nil && ![[d valueForKey:@"Illustration"] isEqualToString:@""])
            {
                UIImage *img=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[d valueForKey:@"Illustration"]]]];
                if(img!=nil)
                    [dict setObject:img forKey:@"Illustration"];
            }

            else 
                [dict setObject:@"No Image" forKey:@"Illustration"];
            if([d valueForKey:@"imagePath"]!=nil && ![[d valueForKey:@"imagePath"] isEqualToString:@""] )
            {
                UIImage *img1=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[d valueForKey:@"imagePath"]]]];
                if(img1!=nil)
                    [dict setObject:img1 forKey:@"imagePath"];
            }
            else 
                [dict setObject:@"NO Image" forKey:@"imagePath"];
            if([[d valueForKey:@"Transactions"] count]>0)
            {
                if([[[d valueForKey:@"Transactions"] objectAtIndex:0] valueForKey:@"UserThumbnail"]!= nil && ![[[[d valueForKey:@"Transactions"] objectAtIndex:0]valueForKey:@"UserThumbnail"] isEqualToString:@""])
                {

                    UIImage *img2=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[[[d valueForKey:@"Transactions"] objectAtIndex:0] valueForKey:@"UserThumbnail"]]]];
                    if(img2!=nil)
                        [dict setObject:img2 forKey:@"UserThumbnail1"];
                }
                else 
                    [dict setObject:@"NOImage" forKey:@"UserThumbnail1"];
            }
            else 
                [dict setObject:@"NOImage" forKey:@"UserThumbnail1"];
            if([[d valueForKey:@"Transactions"] count]>1)
            {
                if([[[d valueForKey:@"Transactions"] objectAtIndex:1] valueForKey:@"UserThumbnail"]!=nil && ![[[[d valueForKey:@"Transactions"] objectAtIndex:1] valueForKey:@"UserThumbnail"] isEqualToString:@""])
                {
                    UIImage *img3=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[[[d valueForKey:@"Transactions"] objectAtIndex:1] valueForKey:@"UserThumbnail"]]]];
                    if(img3!=nil)
                        [dict setObject:img3 forKey:@"UserThumbnail2"];
                }
                else 
                    [dict setObject:@"NOImage" forKey:@"UserThumbnail2"];
            }
            else 
                [dict setObject:@"NOImage" forKey:@"UserThumbnail2"];
            [imageArray addObject:dict];

        }
        //isReloadTable=YES;
        [mTable reloadData];
        [pool release];
    }
}

在這里,我在每次圖像加載后在方法內使用 reloadData,但在滾動表格后它不加載圖像顯示。

我想在它們加載后立即顯示這些圖像。

請幫我。 提前謝謝。

伊修,

嘗試使用它而不是[mTable reloadData]

[mTable beginUpdates];
[mTable endUpdates];

順便說一句,很抱歉,但這段代碼完全不可讀。

Ishu,您的代碼的基本問題是您無法在輔助線程中通過 UIImage imageWithData API 加載圖像。 UIKit APIS 只能在主線程中使用。 您可以做的是下載項目並將它們保存到輔助線程中的文件中,但您仍然需要在主線程中加載該圖像數據。 如果您只想下載然后加載圖像數據,您甚至不需要輔助線程,因為 NSURLConnection class 已經支持異步完成回調,下載會在后台線程中自動完成。

[m_Table reloadData]; 我用這條線

[m_Table performSelectorOnMainThread:@selector(reloadData) withObject:self waitUntilDone:NO];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM