【问题标题】:How do I use UIPopOverController to make an iPhone App that uses the ImagePicker work on iPhone?如何使用 UIPopOverController 使使用 ImagePicker 的 iPhone 应用程序在 iPhone 上运行?
【发布时间】:2012-01-07 14:58:54
【问题描述】:

我正在制作一个通用应用程序,它在 iPhone 上运行良好!但在 iPad 上,它无法拉起图像选择器。代码是:

- (IBAction)openImagePicker:(id)sender //Makes UIImagePicker roll up from the bottom.
{
    UIActionSheet *alertSheet = [[UIActionSheet alloc] initWithTitle:@"Where do you want to get your daily image?" delegate:(self) cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Camera", @"Library", nil];
    [alertSheet setTag:0];
    [alertSheet setDelegate:self];
    [alertSheet showFromTabBar:[[self tabBarController] tabBar]];
    [alertSheet release];
}

它说原因是“* 由于未捕获的异常‘NSInvalidArgumentException’而终止应用程序,原因:‘在 iPad 上,UIImagePickerController 必须通过 UIPopoverController 呈现’”我该怎么做?感谢您的帮助。

【问题讨论】:

  • 您需要检查 iPad 的代码并显示一个弹出框,否则只显示图像控制器。

标签: objective-c ios cocoa-touch ipad uipopovercontroller


【解决方案1】:

您必须检查应用程序安装在哪种类型的设备上,然后适当地展示控制器。您可以按照以下方式进行操作:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    // We are using an iPhone
    UIActionSheet *alertSheet = [[UIActionSheet alloc] initWithTitle:@"Where do you want to get your daily image?" delegate:(self) cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Camera", @"Library", nil];
    [alertSheet setTag:0];
    [alertSheet setDelegate:self];
    [alertSheet showFromTabBar:[[self tabBarController] tabBar]];
    [alertSheet release];
}else {
    // We are using an iPad
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
    imagePickerController.delegate = self;
    UIPopoverController *popoverController=[[UIPopoverController alloc] initWithContentViewController:imagePickerController];
    popoverController.delegate=self;
    [popoverController presentPopoverFromRect:((UIButton *)sender).bounds inView:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

不要忘记实现 UIPopoverController 委托方法。

祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2014-12-04
    相关资源
    最近更新 更多