5

I have developed an app which uses Asyncimageview and iCarousel.But my issues is that when i'm trying to load the images from urls only activity indicator loads in each view of my iCarousel and no images are loaded.Here is my code

  - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(AsyncImageView *)view
 {
if (view == nil
 {
  AsyncImageView * view = [[[AsyncImageView alloc]initWithFrame:CGRectMake(0, 0, 300, 280)] autorelease];
view.image=[UIImage imageNamed:@"infobg.png"];
view.imageURL=[imageURLs objectAtIndex:index];
}
return view;
}
jai
  • 73
  • 4

4 Answers4

2

Cells should be reused

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(AsyncImageView *)view

 {
if (view == nil) {
 view = [[[AsyncImageView alloc]initWithFrame:CGRectMake(0, 0, 300, 280)] autorelease];
}
// dont forget stop previous loading -cancelLoadingURL:target:

 view.image=[UIImage imageNamed:@"infobg.png"];
 view.imageURL=[imageURLs objectAtIndex:index];

 return view;
}

also you should stop previously started

NeverBe
  • 5,213
  • 2
  • 25
  • 39
  • Still i have the same problem only indicator loads and if i use [AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:view]; even activity indicator not showing...any idea? – jai Oct 31 '12 at 11:09
  • @NeverBe Can u explain in above code how to reuse the cell and to stop previous loading methods...i too had same issue long back but switched to another method... – Vishnu Oct 31 '12 at 11:27
  • @VishnuPrasath you should call cancelLoadingURL:target with right parameters before new image loading – NeverBe Oct 31 '12 at 13:05
  • @jai did you try to open these links in browser? – NeverBe Oct 31 '12 at 13:06
  • @NeverBe ya those images are working fine n browsers...i have used cancelloadingURL:[imageURLs objectAtIndex:index] target:view is this the correct way? – jai Oct 31 '12 at 14:35
  • @jai yes in this way. I don't use AsyncImageView for image loading, so i can't check why it happens. You can try SDWebImage, it works for me. – NeverBe Oct 31 '12 at 14:49
2

Follow these steps maybe because of following reasons you may face this issue

-- Check whether if ur imageURLs array is having objects under iCarousel are not...If its null you may have this kind of issue....

-- Do array allocation and add objects in

 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 

method,because if you add objects in your array under viewDidLoad it won't works because carousel view loads first before viewDidLoad method..

-- if your array element is present even after these steps follow this code.

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(AsyncImageView *)view
{
view = [[[AsyncImageView alloc]initWithFrame:CGRectMake(0, 0, 300, 280)] autorelease];

view.image=[UIImage imageNamed:@"infobg.png"];
view.imageURL=[imageURLs objectAtIndex:index];

//NSLog(@"%@",imageURLs)//check imageURLs having object

if(view ==nil)
{
    [[AsyncImageLoader sharedLoader]cancelLoadingImagesForTarget:view];
}
return view;

}

It will help you..

Vishnu
  • 2,243
  • 2
  • 21
  • 44
1
- (void)viewDidLoad
{
    [super viewDidLoad];

    User_Id=@"abcd@gmail.com";

    NSString *Post=[NSString stringWithFormat:@"email=%@",User_Id];
    NSData *PostData = [Post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];
    NSString *PostLengh=[NSString stringWithFormat:@"%d",[Post length]];
    NSURL *Url=[NSURL URLWithString:[NSString stringWithFormat:@"%@fetch_all_user_updates.php",ServerPath]];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:Url     cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    [request setHTTPMethod:@"POST"];
    [request setValue:PostLengh forHTTPHeaderField:@"Content-Lenght"];
    [request setHTTPBody:PostData];

    NSData *ReturnData =[NSURLConnection sendSynchronousRequest:request returningResponse:Nil error:Nil];
    NSString *Response = [[NSString alloc] initWithData:ReturnData encoding:NSUTF8StringEncoding];
    Response = [Response stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    NSMutableArray *JSON_Array=[Response JSONValue];

// NSlog(@"%@", JSON_Array);
// textfield.text=[[JSON_Array valueforKey:@"email"]objectAtIndex:0];
// load images from database at local host
/*
NSLog(@"%@",[NSString stringWithFormat:@"%@/Images/%@",serverScriptpath,[[jsonarray valueForKey:@"image"]objectAtIndex:0]]);
NSURL *img_url=[NSURL URLWithString:[NSString stringWithFormat:@"%@/Images/%@",
                                     serverScriptpath,[[jsonarray valueForKey:@"image"]objectAtIndex:0]]];

NSURLRequest *request1=[NSURLRequest requestWithURL:img_url];
[Img_profilepic setImageWithURLRequest:request1 placeholderImage:[UIImage imageNamed:@".png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {

} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {

}];
*/


    if (JSON_Array>0)
    {
        Array_Image_Name=[JSON_Array valueForKey:@"image_name"];
        [Array_Image_Name retain];
    }
    else
    {
        UIAlertView *Alert=[[UIAlertView alloc]initWithTitle:@"Failure" message:@"Error To Load Image" delegate:Nil cancelButtonTitle:@"OK" otherButtonTitles:Nil, nil];
        [Alert show];
        [Alert release];
    }
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return Array_Image_Name.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell;
    cell=nil;
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    AsyncImageView *Load_Image=[[AsyncImageView alloc]initWithFrame:CGRectMake(20, 10, 280, 100)];
    Load_Image.imageURL=[NSURL URLWithString:[NSString stringWithFormat:@"%@/Images/%@",ServerPath,[Array_Image_Name objectAtIndex:indexPath.row]]];
    Load_Image.showActivityIndicator=YES;
    [cell.contentView addSubview:Load_Image];
    return cell;
}
0
AsyncImageView *asyncImage = [[AsyncImageView alloc] initWithFrame:CGRectMake(0.0f, 1.0f, 320.0f, 174.0f)];
NSString *imgUrlString = photobig1;
while ([imgUrlString rangeOfString:@" "].location != NSNotFound) {
    imgUrlString = [imgUrlString stringByReplacingOccurrencesOfString:@" " withString:@""];
}
UIImageView *imageview = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Loading Image.png"]];
[asyncImage addSubview:imageview];
asyncImage.tag = 999;
NSString *webStr = [NSString stringWithFormat:@"%@",imgUrlString];
NSURL *imageUrl = [[NSURL alloc] initWithString:[webStr stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
[asyncImage loadImageFromURL:imageUrl];
[asyncImage setBackgroundColor:[UIColor clearColor]];
asyncImage.userInteractionEnabled = NO;

  [scrollView addSubview:asyncImage];
sIphone
  • 169
  • 1
  • 2