2017-08-14 7 views
-1

Je sais que cette question a déjà été posée et j'ai vérifié les réponses mais j'ai toujours des problèmes. J'ai besoin de mettre à jour mon jeu XCODE, qui est écrit en Objective-C pour le garder dans AppStore, et je n'ai pas activement touché OBC depuis quelques années maintenant. J'ai été en mesure de résoudre tous les autres problèmes, sauf le problème UIPopoverController.UIPopoverController 'est obsolète: d'abord déconseillé dans iOS 9.0

J'ai marqué les avertissements avec ">" dans le code.

J'apprécierais vraiment de l'aide ici.

J'ai le code suivant:

#import "DetailViewController.h" 

@interface DetailViewController() 

>>@property (strong, nonatomic) UIPopoverController *masterPopoverController; 


- (void)configureView; 
@end 

@implementation DetailViewController 

@synthesize detailItem = _detailItem; 
@synthesize detailDescriptionLabel = _detailDescriptionLabel; 
>>@synthesize masterPopoverController = _masterPopoverController; 

#pragma mark - Managing the detail item 

- (void)setDetailItem:(id)newDetailItem 
{ 
if (_detailItem != newDetailItem) { 
    _detailItem = newDetailItem; 

    // Update the view. 
    [self configureView]; 
} 

>>if (self.masterPopoverController != nil) { 
>> [self.masterPopoverController dismissPopoverAnimated:YES]; 
>>}   
} 

- (void)configureView 
{ 
// Update the user interface for the detail item. 

if (self.detailItem) { 
    self.detailDescriptionLabel.text = [[self.detailItem valueForKey:@"timeStamp"] description]; 
} 
} 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
[self configureView]; 
} 

- (void)viewDidUnload 
{ 
[super viewDidUnload]; 
// Release any retained subviews of the main view. 
self.detailDescriptionLabel = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} else { 
    return YES; 
} 
} 

#pragma mark - Split view 

>>- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController 
{ 
barButtonItem.title = NSLocalizedString(@"Master", @"Master"); 
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES]; 
self.masterPopoverController = popoverController; 
} 

- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem 
{ 
// Called when the view is shown again in the split view, invalidating the button and popover controller. 
[self.navigationItem setLeftBarButtonItem:nil animated:YES]; 
>>self.masterPopoverController = nil; 
} 

@end 

Répondre

1

Depuis cela, vous a été dépréciée devez utiliser UIPopoverPresentationController à la place. Il est clairement indiqué dans la documentation pour le UIPopoverController obsolète.

Par exemple:

// Present the view controller using the popover style. 
myPopoverViewController.modalPresentationStyle = UIModalPresentationPopover; 
[self presentViewController:myPopoverViewController animated: YES completion: nil]; 


// Get the popover presentation controller and configure it. 
UIPopoverPresentationController *presentationController = 
     [myPopoverViewController popoverPresentationController]; 
presentationController.permittedArrowDirections = 
     UIPopoverArrowDirectionLeft | UIPopoverArrowDirectionRight; 
presentationController.sourceView = myView; 
presentationController.sourceRect = sourceRect;