Search code examples
iphoneiosobjective-cxcodeicarousel

iCarousel loading UIViews from NSMutableArray


Hi I included iCarousel in my app for showing list of views. I am facing an issue now.

  1. If i set number of items visible as 3, multiples of 3 index view are displayed
  2. If i didn't set that first and last index of icarousel view is displayed.

I am so confused about the concept of reusing view in iCarousel.

Here is my code

-(void)viewWillAppear:(BOOL)animated
{



ViewArray=[[NSMutableArray alloc]init];
for (int i=0; i<26; i++) {
 [ViewArray addObject:views];
    [carousel1 reloadData];

}
NSLog(@"%@",ViewArray);
}


- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
//return the total number of items in the carousel
return 26;
}


- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
 UIView *sub=nil;
 if (view==nil) {


view=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 900, 387)];

    capitalBG.frame=CGRectMake(28, 29, 221, 329);
    capitalBG.tag=11;
    [view addSubview:capitalBG];

    capitalImage.frame=CGRectMake(28, 29, 221, 329);
           [view addSubview:capitalImage];
    capitalImage.tag=12;
    smallBG.frame=CGRectMake(678, 111, 198, 166);
           [view addSubview:smallBG];
    smallBG.tag=21;
    smallImage.frame=CGRectMake(678, 111, 198, 166);
           [view addSubview:smallImage];
    smallImage.tag=22;

}

else
{

}

capitalBG.frame=CGRectMake(28, 29, 221, 329);
[capitalBG setImage:[UIImage imageNamed:@""]];
[view addSubview:capitalBG];

capitalImage.frame=CGRectMake(28, 29, 221, 329);
[capitalImage setImage:[[[Global ImageCollection]objectForKey:@"CapitalWrite"]objectAtIndex:index]];
[view addSubview:capitalImage];

smallBG.frame=CGRectMake(678, 111, 198, 166);
[smallBG setImage:[UIImage imageNamed:@""]];
[view addSubview:smallBG];

smallImage.frame=CGRectMake(678, 111, 198, 166);
[smallImage setImage:[[[Global ImageCollection]objectForKey:@"SmallWrite"]objectAtIndex:index]];
[view addSubview:smallImage];
 return view;
}


- (CGFloat)carousel:(iCarousel *)carousel valueForOption:(iCarouselOption)option withDefault:(CGFloat)value
{
if (option == iCarouselOptionSpacing)
{
    return value * 1.1f;
}

if (option==iCarouselOptionVisibleItems) {
    return 3;
}
return value;
}

Solution

  • I am not getting what you asked for Clearly. check the code for Implementation of I-carousal to display Images.

         - (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
      {
    //add all your images to an array,and use that array for count. 
    
    return [items count];
     }
    
    
    
         - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index     reusingView:(UIView *)view
      {
        //create new view if no view is available for recycling
    if (view == nil)
    {
        view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 215.0f, 155.0f)];
        ((UIImageView *)view).image = [UIImage imageNamed:[self.items objectAtIndex:index ]];
    
        view.contentMode = UIViewContentModeCenter;
    }
    
    return view;
    

    }

       - (CGFloat)carousel:(iCarousel *)carousel valueForOption:(iCarouselOption)option          withDefault:(CGFloat)value
       {
    //customize carousel display
    
            return value+0.1;
         }