不推荐使用UIPopoverController':首先在iOS 9.0中弃用

时间:2017-08-14 09:16:23

标签: objective-c xcode uipopovercontroller

我知道之前已经问过这个问题而且我已经检查了答案但仍有问题。我需要更新我的XCODE游戏,它是用Objective-C编写的,以便将它保存在AppStore中,而且我已经很多年没有积极地接触过OBC了。我已经能够解决除UIPopoverController问题之外的所有其他问题。

我用“>”标记了警告在代码中。

我真的很感激这里的一些帮助。

我有以下代码:

#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

1 个答案:

答案 0 :(得分:2)

由于这已被弃用,您应该使用UIPopoverController。在文档中明确说明了已弃用的// 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;

例如:

executeQueryAsync