2013-02-11 5 views
1

У меня есть разделенный вид с представлением главной таблицы и подробным представлением. На панели навигации моего основного вида моего разбитого вида у меня есть кнопка, которая должна позволить пользователю делать снимок через imagePicker. Но моя программа продолжает сбой, когда я нажимаю кнопку. Вот процедура MasterViewController.m, который вызывается при нажатии кнопки:iOS Imagepicker на iPad с SplitViewController

-(void) takePicture:(id) sender 
{ 

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
{ 
    [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera]; 
} 
else 
{ 
    [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
} 

[imagePicker setDelegate:self]; 

//[self presentViewController:imagePicker animated:YES completion:nil]; 

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 
    UIPopoverController * popOverController = [[UIPopoverController alloc] initWithContentViewController:imagePicker]; 
    [popOverController presentPopoverFromRect:((UIButton *)sender).frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    //[popOverController presentPopoverFromRect:CGRectMake(700, 1000, 10, 10) inView:self.detailViewController.imageSpace permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

}else { 

    [self presentViewController:imagePicker animated:YES completion:nil]; 
} 

} 

и вот сообщение об ошибке:

2013-02-11 09:06:43.975 ImageSplit2[13044:c07] -[UIBarButtonItem frame]: unrecognized selector sent to instance 0x7183d00 
2013-02-11 09:06:43.976 ImageSplit2[13044:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIBarButtonItem frame]: unrecognized selector sent to instance 0x7183d00' 

ответ

0

sender не UIButton, это UIBarButtonItem, который не является вид, поэтому он не имеет свойства frame.

Изменить это:

[popOverController presentPopoverFromRect:((UIButton *)sender).frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

к:

[popOverController presentPopoverFromBarButtonItem:(UIBarButtonItem *)sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

Side Примечание: Вы должны использовать поповер на IPad, если выбрать изображение из библиотеки фотографий. Тем не менее, совершенно правильно представить фотокамеру на основе камеры в качестве полноэкранного контроллера. Таким образом, вы можете изменить if заявление от:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 

к:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && imagePicker.sourceType != UIImagePickerControllerSourceTypeCamera) 
+0

Спасибо, что было то, что мне было нужно, и второй бонус делает мою программу еще лучше;) – DarkCell

Смежные вопросы