Как работает условное кодирование для iPhone и iPad в реальности? - PullRequest
0 голосов
/ 24 мая 2011

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 ]

3 голосов
/ 24 мая 2011

Вы можете проверить, существует ли класс, сделав это.

Class popoverClass = (NSClassFromString(@"UIPopoverController"));
if (popoverClass != nil) {
// you're on ipad
} else {
// you're on iphone/ipod touch
}
2 голосов
/ 24 мая 2011

Вы можете быстро проверить, на каком устройстве вы находитесь:

[[UIDevice currentDevice] model];
2 голосов
...