如何有条不紊地为iPhone和iPad编码?

时间:2011-05-24 14:56:26

标签: objective-c ios conditional uiimagepickercontroller uipopovercontroller

UIImagePicker必须在iPhone和iPad上以不同的方式呈现。在iPad上,它抛出一个例外说:

  

* 由于未捕获的异常而终止应用   'NSInvalidArgumentException',原因:   '在iPad上,UIImagePickerController必须   通过UIPopoverController'

呈现

所以我必须将代码添加到我特定于iPad的通用应用程序中。有什么安全的方法可以让应用程序在没有UIPopoverController的设备上崩溃?

示例:

popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
        [popover presentPopoverFromRect:CGRectMake(100, 100.0, 0.0, 0.0) 
                                 inView:self.view
               permittedArrowDirections:UIPopoverArrowDirectionAny 
                               animated:YES];

另外,如果我需要一个UIPopoverController,我需要一个保存它的实例变量。我该如何处理?

3 个答案:

答案 0 :(得分:3)

您可以通过执行此操作来检查是否存在类。

Class popoverClass = (NSClassFromString(@"UIPopoverController"));
if (popoverClass != nil) {
// you're on ipad
} else {
// you're on iphone/ipod touch
}

答案 1 :(得分:2)

答案 2 :(得分:2)

您可以快速检查您使用的设备:

[[UIDevice currentDevice] model];