【发布时间】:2014-09-29 09:56:15
【问题描述】:
在我的应用程序中,用户可以按下一个 tableviewcell,它会在其标题中显示一个带有按钮的弹出框。按下此按钮将显示一个导航视图控制器。
DNWInfoViewController *infoViewController = [[DNWInfoViewController alloc] initWithInfoText:infoText];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:infoViewController];
navController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:navController animated:YES completion:nil];
但从 iOS 8 开始,我收到此警告并且视图没有显示:
Warning: Attempt to present <UINavigationController: 0x180e1dc0> on <ANProjectFilterViewController: 0x16ec5cf0> which is already presenting (null)
这一定是因为 popovercontroller 仍在显示,所以我在呈现视图之前尝试了这个
[_ppvrController dismissPopoverAnimated:YES]; // This will not call the delegate
这个“修复”有时会奏效。但大多数时候它仍然显示警告而不是我的观点。我尝试手动调用委托,但结果相同。
这曾经在 iOS 7 及更低版本中运行良好。如何在 iOS 8 中从弹出框呈现新视图?
编辑 1
显示我已经找到了
dismissPopoverAnimated
由于某种原因在 iOS 8 中不起作用。通常,当用户从弹出框中选择一个项目时,会调用一个方法,该方法首先关闭弹出框,然后执行一些自定义操作。在 iOS 7 中,弹出框会在选择时消失,但在 iOS 8 中不会。
编辑 2
所以真正触发警告的是这段代码:
[_ppvrController dismissPopoverAnimated:YES];
这段代码在一个方法中。该方法是从显示的弹出框内的按钮调用的。一半的时间弹出窗口被成功关闭,但有时它只是打印警告,弹出窗口保持可见。
注意:此方法中没有其他代码。只需一行即可关闭弹出框。
【问题讨论】:
标签: objective-c xcode uiviewcontroller uipopovercontroller