2015-03-31 71 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];