"UIPopoverController" deprecated: deprecated first in iOS 9.0

I developed a project that shows an error:

'UIPopoverController' is deprecated: first deprecated in iOS 9.0 - UIPopoverController is deprecated. Popovers are now implemented as presentations of the UIViewController. Use the modal presentation style of UIModalPresentationPopover and UIPopoverPresentationController.

My encodings:

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"]; } } 

I could not reference UiModalPresentationPopover correctly. Can someone help me solve this error. Any help is much appreciated. Thanks.

+5
source share
1 answer

use UIModalPresentationPopover

In a horizontal-normal environment, a presentation style where the content is displayed as a popover. Background content is obscured and triggered beyond the reason popover popover is fired. If you do not want the taps to reject the popover, you can assign one or more views to the passthroughViews property of the associated UIPopoverPresentationController object, which you can get from the popoverPresentationController property.

In a horizontally compact environment, this option behaves the same as UIModalPresentationFullScreen.

Available in iOS 8.0 and later.

UIModalPresentationStyle Reference

eg

 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]; 

else use UIPopoverPresentationController

eg

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

Sitelink

+5
source

Source: https://habr.com/ru/post/1234514/


All Articles