我的客户端要求iOS 7和8都支持带有嵌入式UINavigationController的传统UIPopoverViewController。我总体上遇到了很多困难,我想知道其他人是否有更多的成功在这方面。
我使用了以下做法的组合:
setPopoverContentSize:
,似乎只在iOS 7上受支持。我只在iOS 7设备上指定此内容。
preferredContentSize
presentingViewController.presentedViewController
的{{1}}属性,似乎只在iOS 8上受支持。
在iOS 7上,由于导航控制器推动视图,似乎会出现一些不稳定的大小调整。我认为这个大小可能是由XIB本身推断的:(
...
在iOS 7支持方面是否可能缺少某些内容?
答案 0 :(得分:0)
正如今早从另一篇文章中暗示的那样,我在错误的时间设置上述参数 - 将它们移动到viewDidLayoutSubviews导致问题的合理解决方案。 iOS 7和iOS之间的布局仍然不完全一致。 8,但它现在足够接近。
答案 1 :(得分:0)
我使用此代码来呈现一个嵌入了navcontroller的popover。据我所知,它在iOS 5-8上完全相同。代码是从NavBar中的按钮调用的,所以我不必担心在错误的时间设置它。我在#defines中设置了POPOVER_WIDTH和POPOVER_HEIGHT,因为我有几个弹出窗口,我希望它们都是一样的。
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];