2

重複の可能性:
iPhone、「登録しようとしているフィルタリングされたアルバムリストが最大5つを超えています。これは失敗します。」エラー

PopoverControllerまたはModalViewControllerを介してUIImageViewsに画像を追加する場合、4番目の画像の後に5番目の画像を追加すると、Xcodeのデバッガーは次のように出力します。 。「それでも5枚以上の写真を追加できますが、保存できるのは4枚だけです。私はこれについてここでいくつかの調査を行い、この質問を見つけました: iOS 5 GM:<エラー>:登録しようとしている最大5つを超えるフィルターされたアルバムリスト。これは失敗します

ここでの答えは、Appleのバグであるかのように見え、無視する必要があります。ええと、Appleは通常(ある程度)Xcodeのバグを修正するのが早いです、そしてこれはしばらく前からありました、それで私は本当の原因が何であるか疑問に思い始めています。このエラーは、私のアプリが最大4枚の写真しか保存していないことに関連していると思います。

これが私が使っているコードです:

- (IBAction)grabImage {
    self.imgPicker = [[UIImagePickerController alloc] init];
    self.imgPicker.delegate = self;
    self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        _popover = [[UIPopoverController alloc] initWithContentViewController:imgPicker];
        [_popover presentPopoverFromRect:self.imageView.bounds inView:self.imageView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    } 

    else {
        [self presentModalViewController:imgPicker animated:YES];
    }
    [self.imgPicker resignFirstResponder];
}
// Sets the image in the UIImageView
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
    if (imageView.image == nil) {
        imageView.image = img;

        [self.array addObject:imageView];

        [picker dismissModalViewControllerAnimated:YES];
        [self.popover dismissPopoverAnimated:YES];
        return;

    }

    if (imageView2.image == nil) {
        imageView2.image = img;
        NSLog(@"The image is a %@", imageView);
        [self.array addObject:imageView2];

        [picker dismissModalViewControllerAnimated:YES];
        [self.popover dismissPopoverAnimated:YES];
        return;
    }

    if (imageView3.image == nil) {
        imageView3.image = img;

        [self.array addObject:imageView3];

        [picker dismissModalViewControllerAnimated:YES];
        [self.popover dismissPopoverAnimated:YES];
        return;
    }

    if (imageView4.image == nil) {
        imageView4.image = img;

        [self.array addObject:imageView4];

        [picker dismissModalViewControllerAnimated:YES];
        [self.popover dismissPopoverAnimated:YES];
        return;
    }
    if (imageView5.image == nil) {
        imageView5.image = img;

        [self.array addObject:imageView5];

        [picker dismissModalViewControllerAnimated:YES];
        [self.popover dismissPopoverAnimated:YES];
        return;
    }
}

更新:これが私の現在のコードです:

- (IBAction)grabImage {
    if (self.imgPicker == nil) {
        self.imgPicker = [[UIImagePickerController alloc] init];
    }

    self.imgPicker.delegate = self;
    self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        _popover = [[UIPopoverController alloc] initWithContentViewController:imgPicker];
        [_popover presentPopoverFromRect:self.imageView.bounds inView:self.imageView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    } 

    else {
        [self presentModalViewController:imgPicker animated:YES];
    }
    [self.imgPicker resignFirstResponder];
}
4

1 に答える 1

2

リンクされている他の質問から、これは Apple のバグのようですが、複数UIImagePickerControllerの の作成に関連しています。一度に 1 つのイメージ ピッカー コントローラーしか提示していないため、grabImage毎回新しいものを作成するのではなく、最初に呼び出したときに 1 つ作成してから再利用する必要があります。

于 2012-04-15T06:35:02.130 に答える