我有这个应用程序,以前是在Xcode 7上开发和维护的。 但是最近我们不得不将Xcode升级到10,才能将应用发布到苹果商店。
许多布局在更新时被破坏,这似乎是一个已知问题 ref。我相信这是AutoLayout问题。我通过在情节提要中添加了必要的约束来解决了这些问题。
但是其中一个popovercontroll存在问题,我不知道如何解决。
弹出窗口没有显示。
代码未更改。它是自UITableViewController
继承的自定义表格视图控制器。我尝试了更新框架,但是没有用。
应该弹出视图的代码:
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
UNISortTableViewController *contentViewController = [storyBoard instantiateViewControllerWithIdentifier:@"UNISortTableViewController"];
((UNISortTableViewController *)contentViewController).sortKeyArray = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", nil];
[(UNISortTableViewController *)contentViewController setPreviousSortKeyIndex:sortKeyIndex];
[(UNISortTableViewController *)contentViewController setPreviousSortOrder:ascIssues];
self.popoverController = [[popoverClass alloc] initWithContentViewController:contentViewController];
if ([self.popoverController respondsToSelector:@selector(setContainerViewProperties:)]) {
[self.popoverController setContainerViewProperties:[self improvedContainerViewProperties]];
}
self.popoverController.delegate = self;
contentViewController.delegate = self;
[self.popoverController presentPopoverFromBarButtonItem:sender
permittedArrowDirections:(UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown|
UIPopoverArrowDirectionLeft|UIPopoverArrowDirectionRight)
animated:YES];
调试时,我看到未调用cellforrowatindexpath
事件
答案 0 :(得分:1)
您过时的代码正在调用initWithContentViewController
。这表明您使用的是UIPopoverController,在iOS 9之后不推荐使用。
您需要使弹窗方法现代化。如今,弹出窗口只是各种呈现的视图控制器。没有像UIPopoverController这样的东西了。您只需在presentViewController
为modalPresentationStyle
的普通UIViewController上调用UIModalPresentationPopover
。您指定箭头移动方向的整个方式也已更改,但是由于文档和其他地方都提供了完整的信息,因此我将不做详细介绍。
答案 1 :(得分:0)
好像Xcode 10一样,popoverContentSize
变成了0,0
我最终使用了以下代码
if (!([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad))
{
self.popoverController.popoverContentSize = contentViewController.preferredContentSize;
}