picture does not show up using iCarousel

427 Views Asked by At

I am using MultiCarousel in a storyboard and I am getting errors and can not display the image in the carousel. Is there a problem with the code??I am getting errors from viewfromItemAtIndex saying
expected method body
expected':'
expected identifier or (
expected identifier or (
extraneous closing brace ("}")
Please feel free to ask for more code if you want to see a specific part.

#import "iCarouselExampleViewController.h"


@interface iCarouselExampleViewController ()

@property (nonatomic, retain) NSMutableArray *items1;
@property (nonatomic, retain) NSMutableArray *items2;

@end


@implementation iCarouselExampleViewController

@synthesize carousel1;
@synthesize carousel2;
@synthesize items1;
@synthesize items2;
- (void)awakeFromNib
{
    //set up data sources
    self.items1 = [NSMutableArray array];
    for (int i = 0; i < 100; i++)
    {
        [items1 addObject:[NSNumber numberWithInt:i]];
    }

    self.items2 = [NSMutableArray array];
    for (int i = 65; i < 65 + 58; i++)
    {
        [items2 addObject:[NSString stringWithFormat:@"%c", i]];
    }
}

- (void)dealloc
{
    //it's a good idea to set these to nil here to avoid
    //sending messages to a deallocated viewcontroller
    carousel1.delegate = self;
    carousel1.dataSource = self;
    carousel2.delegate = self;
    carousel2.dataSource = self;


}

#pragma mark -
#pragma mark View lifecycle

-(void)viewDidLoad
{
    [super viewDidLoad];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSFileManager *fileManager  = [NSFileManager defaultManager];

    //configure carousel1
    NSString *fPath = [documentsDirectory stringByAppendingPathComponent:@"Tops"];
    NSArray *directoryContent = [fileManager directoryContentsAtPath: fPath];
    imageArray1 = [directoryContent mutableCopy];

    //configure carousel2
    fPath = [documentsDirectory stringByAppendingPathComponent:@"Bottoms"];
    directoryContent = [fileManager directoryContentsAtPath:fPath];
    imageArray2 = [directoryContent mutableCopy];

    carousel1.type = iCarouselTypeLinear;
    carousel2.type = iCarouselTypeLinear;
}

- (void)viewDidUnload
{
    [super viewDidUnload];

    //free up memory by releasing subviews
    self.carousel1 = nil;
    self.carousel2 = nil;
}

#pragma mark -
#pragma mark iCarousel methods

- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
    //return the total number of items in the carousel
    if (carousel == carousel1)
    {
        return [imageArray1 count];
    }
    else
    {
        return [imageArray2 count];
    }
}

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

if (view == nil)
{
    view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200.0f, 200.0f)];

    UIImage *image;
    if (carousel == carousel1)
    {
        image  = [UIImage imageWithContentsOfFile:[imageArray1 objectAtIndex:index]];
        ((UIImageView *)view).image = image;
    }
    else
    {
        image  = [UIImage imageWithContentsOfFile:[imageArray2 objectAtIndex:index]];
        ((UIImageView *)view).image = image;
    }
    return view;
}
else {
    UIImage *image;
    if (carousel == carousel1)
    {
        image  = [UIImage imageWithContentsOfFile:[imageArray1 objectAtIndex:index]];
        ((UIImageView *)view).image = image;
    }
    else
    {
        image  = [UIImage imageWithContentsOfFile:[imageArray2 objectAtIndex:index]];
        ((UIImageView *)view).image = image;
    }
}


return view;
}
1

There are 1 best solutions below

2
Mick MacCallum On BEST ANSWER

You were actually really close. You were missing the very first brace in the beginning of the method. In the future, Xcode will point you to a location at least near the error which you can use as a starting point to analyze your code. Always make sure to count and balance opening and closing braces, brackets, and parens.

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{ // <--- This brace was missing!!
    if (view == nil)
    {
        view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200.0f, 200.0f)];

        UIImage *image;
        if (carousel == carousel1)
        {
            image  = [UIImage imageWithContentsOfFile:[imageArray1 objectAtIndex:index]];
            ((UIImageView *)view).image = image;
        }
        else
        {
            image  = [UIImage imageWithContentsOfFile:[imageArray2 objectAtIndex:index]];
            ((UIImageView *)view).image = image;
        }
        return view;
    }
    else {
        UIImage *image;
        if (carousel == carousel1)
        {
            image  = [UIImage imageWithContentsOfFile:[imageArray1 objectAtIndex:index]];
            ((UIImageView *)view).image = image;
        }
        else
        {
            image  = [UIImage imageWithContentsOfFile:[imageArray2 objectAtIndex:index]];
            ((UIImageView *)view).image = image;
        }
    }
    return view;
}