【问题标题】:Ipad UIImagePickerController and UIPopoverController errorIpad UIImagePickerController 和 UIPopoverController 错误
【发布时间】:2010-05-12 12:53:47
【问题描述】:

我正在使用此代码通过 imagepicker 打开一个弹出框

-(IBAction)photosAction:(id)sender 
{
// dismiss any left over popovers here
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];
[picker release];

但是这会导致这个错误request for member 'popoverController' in something not a structure or union并且这个错误'popoverController' undeclared (first use in this function) .

我还想在选择图像时关闭弹出框。

选择图像后,我应该在以下函数中输入什么代码来关闭弹出框。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

感谢您的帮助!

【问题讨论】:

    标签: ipad uiimagepickercontroller uipopovercontroller


    【解决方案1】:

    这个错误意味着 popoverController 没有在视图控制器中声明。您需要将其作为 ivar 和属性添加到接口中(它不是内置的):

    @interface ... {
         ...
         UIPopoverController *popoverController;
    }
    @property (nonatomic, retain) UIPopoverController *popoverController;
    @end
    

    在实现中,添加@synthesize,在viewDidUnload中设置为nil,在dealloc中释放。

    要关闭弹出框,您可以调用dismissPopoverAnimated:。

    [self.popoverController dismissPopoverAnimated:YES];
    

    【讨论】:

    • 谢谢,这解决了错误。但是,当我单击应该加载弹出框的按钮时,我在控制台中收到这些错误。 *** -[UIRoundedRectButton 视图]:无法识别的选择器发送到实例 0x4d1e140 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'*** -[UIRoundedRectButton 视图]:无法识别的选择器发送到实例 0x4d1e140
    • 你为按钮点击设置了什么动作?显示创建按钮的代码。确保 addTarget 中的选择器显示“photosAction:”结尾带有冒号。如果在 IB 中创建了按钮,请检查 touch-up-inside 的连接。
    • IBOutlet UIButton * selectImageBtn; @property (nonatomic,retain) IBOutlet UIButton * selectImageBtn; @synthesize selectImageBtn
    • 现在,当我输入这段代码时,它就可以工作了。 UIPopoverController* aPopover = [[UIPopoverController alloc] initWithContentViewController:picker]; [aPopover setPopoverContentSize:CGSizeMake(320, 320)]; [aPopover presentPopoverFromRect:CGRectMake(200,200,-100,-100) inView:self.view allowedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; self.popoverController1 = aPopover;
    • 不太确定保留 popoverController 是否是个好主意。我猜 popoverController 也保留了 contentsViewController 并可能在它的 dealloc 中释放它,这将导致它们永远不会相互释放。
    【解决方案2】:

    这个错误是因为我的函数需要一个条形按钮项而我使用的是普通的 ui 按钮。

    【讨论】:

    • 我一直在努力解决同样的问题。你有机会发布你的代码吗?您是否更改了 UI 以使用条形按钮项,或者更改了代码?
    【解决方案3】:

    尝试使用此代码:

    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
    [popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 400.0, 400.0) 
                             inView:self.view
           permittedArrowDirections:UIPopoverArrowDirectionAny 
                           animated:YES];
    

    【讨论】:

      猜你喜欢
      • 2013-04-03
      • 2013-09-30
      • 2012-10-31
      • 1970-01-01
      • 2012-06-13
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多