1

UIImagePickerController を使用して、iPad アプリケーションのフォトライブラリから写真をロードしたいと考えています。次のコード行を使用しています。

-(IBAction)photolibrarypressed:(id)sender{



  // / Create window
 //self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 NSLog(@"hi");
// Set up the image picker controller and add it to the view

//imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//[window addSubview:imagePickerController.view];






//UIImagePickerController *picker= [[UIImagePickerController alloc]init];
    //picker.delegate = self;
    //picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

UIImagePickerController *picker= [[UIImagePickerController alloc]init];

picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.delegate = self;

UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:picker];
self.popoverController = popover;          
popoverController.delegate = self;
[popoverController presentPopoverFromBarButtonItem:sender  permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

[self presentModalViewController:picker animated:YES];
//[picker release];
imageView = [[UIImageView alloc] initWithFrame:[window bounds]];
// Set up the image view and add it to the view but make it hidden
 [window addSubview:imageView];
imageView.hidden = YES;
[window makeKeyAndVisible];     

}

ただし、次のエラーが発生します。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present modally an active controller <splitViewDetailViewController: 

私はそれを理解することができません。

アプリは SplitView タイプで、WebView と ImageView を同時に使用しています。そのため、フォトライブラリのボタンをクリックすると、ImageView に移動する必要があります (私はそう思います)。

誰かが問題を解決するのを手伝ってくれませんか?? 私はObjective Cにかなり慣れていません。ありがとう。


これはどうですか

from_form = move_forms.WaypointForm(
    request.POST or None,
    prefix="marker-from",
    instance=move.from_place)
# ... other forms declared the same way

forms = {
    'from_form': from_form,
    'to_form':  to_form,
    # ...
}
if all(f.is_valid() for f in forms.values()):
    # ...
    return redirect('success')
return render(request, 'template.html', {'forms': forms})
4

1 に答える 1

1

iPhone と iPad を同時に実行するためのコードを取得しました。iPadを使用している場合は、行を削除する必要があります

[self presentModalViewController:picker animated:YES];

iPhoneまたはiPodを使用している場合は、行を削除する必要があります

[popoverController presentPopoverFromBarButtonItem:sender  permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

または、アプリを iPad と iPhone の両方で実行する場合は、if ステートメントを使用して、アプリが実行されているデバイスを確認します。

if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {

    // Display in a popover for the iPad
    [popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

} else {

    // Display modally for the iPhone
    [self presentModalViewController:picker animated:YES];

}
于 2012-06-13T10:17:09.220 に答える