2015-03-31 47 views
0

我的客户端要求在iOS 7和8上都支持具有嵌入式UINavigationController的传统UIPopoverViewController。我在整体上遇到了很多困难,我想知道是否有其他人在这方面取得了更大的成功。UIPopoverController - 同时支持iOS 7和8

我使用的做法如下组合:

  • setPopoverContentSize:,只似乎支持iOS 7,我只在iOS 7的设备指定此。要在iOS 8.

支持iOS 7的presentingViewController.presentedViewController

  • preferredContentSize属性,它似乎只具体地,一些尺寸调整靠不住似乎发生作为导航控制器推的图的结果。我认为这个尺寸可能是由XIB本身推断的:( ...

    在iOS 7支持方面有可能丢失了一些东西吗?

  • 回答

    0

    从今天上午的另一篇文章中暗示,我在错误的时间设置了上述参数 - 将它们移动到viewDidLayoutSubviews中导致对问题的合理解决方案。 iOS 7 & 8之间的布局仍然不完全一致,但现在已经足够接近了。

    0

    我使用此代码来呈现嵌入了navcontroller的弹出窗口。据我所知,它在iOS 5-8上的工作原理完全相同。该代码是从NavBar中的按钮调用的,所以我不必担心在错误的时间设置它。我在#defines中设置了POPOVER_WIDTH和POPOVER_HEIGHT,因为我有几个popovers,我希望它们全都相同。

    if (self.myPopoverController == nil) { 
    
         SettingsTableViewController *svc = [[SettingsTableViewController alloc] 
                  initInManagedObjectContext:self.mObjContext 
                  withScoreKeeper:self.scoreKeeper 
                  withWordList:self.wordList]; 
    
         UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:svc]; 
         navController.delegate = self; 
         UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:navController]; 
         popover.delegate = self; 
         popover.popoverContentSize = CGSizeMake(POPOVER_WIDTH, POPOVER_HEIGHT); 
         self.myPopoverController = popover; 
         [svc setPopover:popover]; 
        // } 
    } 
    [self.myPopoverController presentPopoverFromBarButtonItem:buttonPressed permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];