«UIPopoverController» устарел: впервые устарел в iOS 9.0

Я разработал проект, который показывает ошибку:

«UIPopoverController» устарел: впервые устарел в iOS 9.0 — UIPopoverController устарел. Всплывающие окна теперь реализованы как презентации UIViewController. Используйте стиль модального представления UIModalPresentationPopover и UIPopoverPresentationController.

Мои кодировки:

ViewController.h:

#import <UIKit/UIKit.h>
#import <Photos/Photos.h>
#import <MobileCoreServices/MobileCoreServices.h>



@interface ViewController : UIViewController
 <UIImagePickerControllerDelegate, UINavigationControllerDelegate>

- (IBAction)touch:(id)sender;

@end

@interface SecondView : UIViewController
<UIImagePickerControllerDelegate, UINavigationControllerDelegate>



//video gallery
@property (strong,nonatomic) UIPopoverPresentationController *popOver;
@property (weak, nonatomic) IBOutlet UIView *studentView;
@property (strong, nonatomic) NSURL *videoURL;


@end

ViewController.m:

- (void)openGallery {

UIImagePickerController *Picker=[[UIImagePickerController alloc] init];
Picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
Picker.mediaTypes=[[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie,  nil];
Picker.delegate=self;

if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

{


    UIPopoverController *popController=[[UIPopoverController alloc] initWithContentViewController:Picker];
    [popController presentPopoverFromRect:CGRectMake(0, 600, 160, 300) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    self.popOver=popController;
}
else
{
    [self presentViewController:Picker animated:YES completion:nil];
}
}


#pragma mark - UIImagePickerControllerDelegate

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


if (self.studentView) {

    self.videoURL = info[UIImagePickerControllerMediaURL];
    [picker dismissViewControllerAnimated:YES completion:NULL];


    [[NSUserDefaults standardUserDefaults] setObject:[self.videoURL absoluteString] forKey:@"url1"];
}

}

Я не мог правильно указать ссылку на UiModalPresentationPopover. Может ли кто-нибудь помочь мне решить эту ошибку. Буду признателен за любую оказанную помощь. Спасибо.


person marian    schedule 26.10.2015    source источник


Ответы (1)


используйте UIModalPresentationPopover

В горизонтальной регулярной среде стиль презентации, в котором содержимое отображается во всплывающем окне. Фоновое содержимое затемнено, а касание за пределами всплывающего окна приводит к его закрытию. Если вы не хотите, чтобы касания закрывали всплывающее окно, вы можете назначить одно или несколько представлений свойству passthroughViews связанного объекта UIPopoverPresentationController, которое можно получить из свойства popoverPresentationController.

В горизонтально компактной среде этот параметр ведет себя так же, как UIModalPresentationFullScreen.

Доступно в iOS 8.0 и более поздних версиях.

Ссылка Справочник по UIModalPresentationStyle

Например

ModalViewController *modal = [[ModalViewController alloc] init];
modal.modalPresentationStyle = UIModalPresentationPopover;
modal.transitioningDelegate = self;
modal.popoverPresentationController.sourceView = self.view;
modal.popoverPresentationController.sourceRect = CGRectZero;
modal.popoverPresentationController.delegate = self;

[self presentViewController:modal animated:YES completion:nil];

иначе используйте UIPopoverPresentationController

Например

UIPopoverPresentationController *popController = [self. popoverPresentationController];
popController.permittedArrowDirections = UIPopoverArrowDirectionAny;
popController.barButtonItem = self.leftButton;
popController.delegate = self;

дополнительная справочная информация

person Anbu.Karthik    schedule 26.10.2015