0

所以我UIscrollview在我看来是两个。我正在使用Ray Wenderlich's Custom Image Picker。但是当我加载它时,只显示 1 个图像选择器。我希望能够加载两个图像选择器。我认为我做错了initWithCoder部分。似乎无法正确初始化它。是否有可能有两个 ivars self。抱歉,对 iphoneDev 有点陌生。谢谢你的帮助。

这是我的整个实现:

- (id) initWithCoder:(NSCoder *)aDecoder {
    if ((self = [super initWithCoder:aDecoder])) {
        _images =  [[NSMutableArray alloc] init];
        _thumbs =  [[NSMutableArray alloc] init];

        //THIS IS WHERE I THINK ITS WRONG but the upper part seems to be okay.
        _images2 =  [[NSMutableArray alloc] init];
        _thumbs2 =  [[NSMutableArray alloc] init];
    }
    return self;
}

- (void)addImage:(UIImage *)image {
    [_images addObject:image];
    [_thumbs addObject:[image imageByScalingAndCroppingForSize:CGSizeMake(60, 60)]];
}
- (void)addImage2:(UIImage *)image {
    [_images2 addObject:image];
    [_thumbs2 addObject:[image imageByScalingAndCroppingForSize:CGSizeMake(60, 60)]];
}


- (void) createScrollView {
    self.slotBg = [[UIView alloc] initWithFrame:CGRectMake(43, 370, 300, 143)];
    CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.frame = self.slotBg.bounds;
    gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor grayColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
    [self.slotBg.layer insertSublayer:gradient atIndex:0];
    [self.view addSubview:self.slotBg];
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f,0.0f,300.0f,134.0f)];
    [slotBg addSubview:scrollView];

    int row = 0;
    int column = 0;
    for(int i = 0; i < _thumbs.count; ++i) {

        UIImage *thumb = [_thumbs objectAtIndex:i];
        UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(column*60+10, row*60+10, 60, 60);
        [button setImage:thumb forState:UIControlStateNormal];
        [button addTarget:self 
                   action:@selector(buttonClicked:) 
         forControlEvents:UIControlEventTouchUpInside];
        button.tag = i; 

        [scrollView addSubview:button];

        if (column == 4) {
            column = 0;
            row++;
        } else {
            column++;
        }

    }

    [scrollView setContentSize:CGSizeMake(330, (row+1) * 60 + 10)];
}

- (void) createScrollView2 {
    self.slotBg2 = [[UIView alloc] initWithFrame:CGRectMake(362, 370, 300, 143)];
    CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.frame = self.slotBg.bounds;
    gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor grayColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
    [self.slotBg.layer insertSublayer:gradient atIndex:0];
    [self.view addSubview:self.slotBg];

    UIScrollView *scrollView2 = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f,0.0f,300.0f,134.0f)];
    [slotBg addSubview:scrollView2];

    int row = 0;
    int column = 0;
    for(int i = 0; i < _thumbs2.count; ++i) {

        UIImage *thumb = [_thumbs2 objectAtIndex:i];
        UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(column*60+10, row*60+10, 60, 60);
        [button setImage:thumb forState:UIControlStateNormal];
        [button addTarget:self 
                   action:@selector(buttonClicked2:) 
         forControlEvents:UIControlEventTouchUpInside];
        button.tag = i; 

        [scrollView2 addSubview:button];

        if (column == 4) {
            column = 0;
            row++;
        } else {
            column++;
        }

    }

    [scrollView2 setContentSize:CGSizeMake(330, (row+1) * 60 + 10)];

}



- (IBAction)buttonClicked:(id)sender {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSInteger slotBG = [prefs integerForKey:@"integerKey"];

    if(slotBG == 1){
    UIButton *button = (UIButton *)sender;
    [button removeFromSuperview];
    [_images objectAtIndex:button.tag];
    [_images removeObjectAtIndex:button.tag];

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"oneSlotImages%lu.png", button.tag]];
    [fileManager removeItemAtPath: fullPath error:NULL];
    NSLog(@"image removed");
    } else if (slotBG == 2){
        UIButton *button = (UIButton *)sender;
        [button removeFromSuperview];
        [_images objectAtIndex:button.tag];
        [_images removeObjectAtIndex:button.tag];

        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"firstSlotImages%lu.png", button.tag]];
        [fileManager removeItemAtPath: fullPath error:NULL];
        NSLog(@"image removed");

    } else if (slotBG == 3){
        UIButton *button = (UIButton *)sender;
        [button removeFromSuperview];
        [_images objectAtIndex:button.tag];
        [_images removeObjectAtIndex:button.tag];

        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"oneSlotImages%lu.png", button.tag]];
        [fileManager removeItemAtPath: fullPath error:NULL];
        NSLog(@"image removed");
    }   
}

- (IBAction)buttonClicked2:(id)sender {
    UIButton *button2 = (UIButton *)sender;
    [button2 removeFromSuperview];
    [_images2 objectAtIndex:button2.tag];
    [_images2 removeObjectAtIndex:button2.tag];

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"secondSlotImages%lu.png", button2.tag]];
    [fileManager removeItemAtPath: fullPath error:NULL];
    NSLog(@"image removed");
}


- (void)viewDidLoad
{
    [super viewDidLoad];

    NSInteger slotBG = [prefs integerForKey:@"integerKey"];

    if(slotBG == 1){
        [mode1 setHighlighted:YES];

        for(int i = 0; i <= 100; i++) 
        { 
            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDir = [paths objectAtIndex:0];

            NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"oneSlotImages%d.png", i]]; 
            NSLog(@"savedImagePath=%@",savedImagePath);
            if([[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]){ 
                [self addImage:[UIImage imageWithContentsOfFile:savedImagePath]]; 

                NSLog(@"file exists");
            } 
        } 
            NSLog(@"Count : %d", [_images count]);
        [self createScrollView];

    } else if(slotBG == 2 ){
        [mode2 setHighlighted:YES];
        for(int i = 0; i <= 100; i++) 
        { 

            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDir = [paths objectAtIndex:0];

            NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"firstSlotImages%d.png", i]]; 
            NSLog(@"savedImagePath=%@",savedImagePath);
            if([[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]){ 
                [self addImage:[UIImage imageWithContentsOfFile:savedImagePath]]; 

                NSLog(@"file exists");
            } 
        }
            NSLog(@"Count : %d", [_images count]);  

            [self createScrollView];

        for(int i = 0; i <= 100; i++) 
        { 
                    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDir = [paths objectAtIndex:0];

            NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"secondSlotImages%d.png", i]]; 
            NSLog(@"savedImagePath=%@",savedImagePath);
            if([[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]){ 
                [self addImage2:[UIImage imageWithContentsOfFile:savedImagePath]]; 
                 NSLog(@"file exists");
            } 
        }
        NSLog(@"Count : %d", [_images2 count]);  

        [self createScrollView2];


    }  else if( slotBG == 3){
        [mode3 setHighlighted:YES];

        for(int i = 0; i <= 100; i++) 
        { 
            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDir = [paths objectAtIndex:0];

            NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"oneSlotImages%d.png", i]]; 
            NSLog(@"savedImagePath=%@",savedImagePath);
            if([[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]){ 
                [self addImage:[UIImage imageWithContentsOfFile:savedImagePath]]; 

                NSLog(@"file exists");
            } 
        } 
        NSLog(@"Count : %d", [_images count]);
        [self createScrollView];

    }     




} 
4

1 回答 1

0

在您的createScrollView2方法中,您分配 self.slotBg2,但在添加到您的视图时仅引用 self.slotBg。然后你将你的 scrollview2 添加到原来的 slotBg 中。

于 2012-06-19T02:47:33.667 回答