1

私のアプリでは、ボタンを押すとカスタムimagePickerが表示され、画像が含まれています。NSDocumentDirectory画像を選択すると、非表示、削除、選択済みとして設定、または選択されたと見なされるものが表示されます。

私が試したことは、それに整数を割り当てることです。そのため、次に提示するときにimagePicker、上記のいずれかを実行しますが、それでも運がありません。

問題を解決する方法や提案を教えてください。ありがとうございました。

これが私のコードです:

- (void)viewDidLoad {

    // Create view
    UIScrollView *view = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f,0.0f,1024.0f,768.0f)];

    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*140+24, row*150+10, 100, 100);
        [button setImage:thumb forState:UIControlStateNormal];
        [button addTarget:self 
                   action:@selector(buttonClicked:) 
         forControlEvents:UIControlEventTouchUpInside];
        button.tag = i; 


        [view addSubview:button];

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

    }

    [view setContentSize:CGSizeMake(1024, (row+1) * 150 + 10)];
    self.view = view;

    [super viewDidLoad];
}

これが私がそれを選択して設定しようとしたところです:

- (void) viewDidAppear:(BOOL)animated{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSInteger selectedImage = [prefs integerForKey:@"selected"];
    if ( selectedImage ){
        [myButton removeFromSuperview];
        [myButton setBackgroundImage:[UIImage imageNamed:@"Checkmark.png"] forState:UIControlStateSelected];
        [myButton setSelected:YES];
        [myButton setHidden:YES];
        [myButton setHighlighted:YES];
        myButton.selected = YES;
    }      
}

クリックしたとき:

- (IBAction)buttonClicked:(id)sender {
    self.myButton = (UIButton *)sender;
    self.selectedImage = [_images objectAtIndex:myButton.tag];

    [[NSUserDefaults standardUserDefaults] setInteger:myButton.tag forKey:@"selected"];


    [[NSUserDefaults standardUserDefaults] synchronize];

    [self dismissModalViewControllerAnimated:NO];
}

呼び出しimagePicker

- (IBAction)chooseCustomImageTapped:(id)sender {
    _imagePicker1 = [[CustomImagePicker alloc] init];
    _imagePicker1.title = @"Choose Custom Image";
   for(int i = 0; i <= 30; i++) 
    { 
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDir = [paths objectAtIndex:0];

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

        } 
    } 

     [self presentModalViewController:_imagePicker1 animated:NO];

}
4

1 に答える 1

0

これを実行して、選択されたように見えるようにボタンを変更してみてください。

- (void)turnButtonToSelected
{
    UIImage *bgImage = [UIImage imageNamed:@"Checkmark.png"];
    [self.button setBackgroundImage:bgImage forState:UIControlStateNormal];
    [self.button setBackgroundImage:bgImage forState:UIControlStateHighlighted];
    [self.button setBackgroundImage:bgImage forState:UIControlStateDisabled];
}

しかし、私はこのボタンが何であるか理解していなかったと言わなければなりません、あなたはそれをどこに置くのですか?
これはグリッド上のボタンの1つですか?

これをコードの代わりにviewDidAppearに入れてください

- (void) viewDidAppear:(BOOL)animated{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSInteger selectedImage = [prefs integerForKey:@"selected"];
    if ( selectedImage ){
        for (UIView *subview in self.view.subviews) {
            if ([subview isKindOfClass:[UIButton class]] && subview.tag == selectedImage) {
                [self turnButtonToSelected];
            }
        }
    }      
}
于 2012-07-19T09:13:23.157 に答える