1

我正在尝试编写一个允许用户从 iPad 上的照片库中选择图像的应用程序。我完全按照网上的消息来源说应该这样做,但是当我单击按钮时,屏幕上只显示箭头,没有其他内容。应该与图像一起显示的弹出框不显示。谁能告诉我为什么会这样?这是我的代码:

        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        [picker setDelegate:self];

        [picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
        [picker setAllowsEditing:YES];

        popoverController = [[UIPopoverController alloc] initWithContentViewController:picker];
        [popoverController presentPopoverFromRect:self.view.frame inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
4

1 回答 1

0

我知道现在回答为时已晚,但如果您已经对此感兴趣,这可能对您有用:

在 .h 文件中,给出这个代表:

@interface ViewController : UIViewController <UIPopoverControllerDelegate, UINavigationControllerDelegate,  UIImagePickerControllerDelegate>

将弹出框创建为属性:

@property (nonatomic, strong) UIPopoverController *popoverController;

最后在 .m 文件中:

-(IBAction)showPhotoLibray:(id)sender
{
    BOOL hasGellery = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary];
    UIImagePickerController* picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = hasGellery ? UIImagePickerControllerSourceTypePhotoLibrary :    UIImagePickerControllerSourceTypePhotoLibrary;
    if (self.popoverController != nil)
    {
        [self.popoverController dismissPopoverAnimated:YES];
        self.popoverController=nil;
    }

    self.popoverController = [[UIPopoverController alloc] initWithContentViewController:picker];
    CGRect popoverRect = [self.view convertRect:[self.theViewObject frame]
                                       fromView:[self.theViewObject superview]];
    popoverRect.size.width = MIN(popoverRect.size.width, 300) ;
    popoverRect.origin.x = popoverRect.origin.x;
    [self.popoverController
     presentPopoverFromRect:popoverRect
     inView:self.view
     permittedArrowDirections:UIPopoverArrowDirectionAny
     animated:YES];
}

self.theViewObject 是调用该方法的对象视图控制器的出口,例如 UIButton

于 2015-02-13T16:46:27.077 回答