iOS 9 测试版更新:Apple 可能已针对 iOS 9 修复此问题。如果您针对 iOS 8 解决此问题,请确保它在 iOS 9 上也能正常工作。
在 Storyboard 中,我创建了一个 popover 演示 segue 以通过按钮呈现导航和 View Controller ,并创建了一个 unwind segue。
在纵向模式下,模态(全屏)显示如预期的那样展开/关闭。
在横向模式下,也会调用 unwind segue,但是弹出窗口不会自动关闭。
我是否错过了一些连接?我必须自己关闭弹出窗口显示吗?
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)__unused sender
{
if ([[segue identifier] isEqualToString:@"showSelectBookChapter"])
{
UINavigationController *navigationController = segue.destinationViewController;
if ([navigationController.topViewController isKindOfClass:[BIBLESelectViewController class]])
{
BIBLESelectViewController *selectViewController = (BIBLESelectViewController *)navigationController.topViewController;
selectViewController.initialBookChapterVerse = self.bookChapterVerse;
}
}
}
- (IBAction)unwindToBIBLEChapterViewController:(UIStoryboardSegue *)segue
{
if ([segue.identifier isEqualToString:@"unwindToBIBLEChapterViewController"]) {
if ([segue.sourceViewController isKindOfClass:[BIBLESelectViewController class]])
{
BIBLESelectViewController *sourceViewController = (BIBLESelectViewController *)segue.sourceViewController;
self.bookChapterVerse = sourceViewController.selectedBookChapterVerse;
[self.tableView reloadData];
}
}
}
更新: 在查看了 gabbler 的示例代码后,我将问题缩小为在单 View 应用程序中弹出窗口关闭正常,但在主从应用程序中没有。
更新 2: 这是层次结构的样子(为简单起见省略了导航 Controller ),以回答 Luis 提出的问题:
- Split View Controller
- 主视图 Controller
- 细节 View Controller
- 章节 View Controller (模态页面表)
- 选择 View Controller (有问题的弹出窗口展开到章节 View Controller ,但不会关闭)
- 章节 View Controller (模态页面表)
正如我在之前的更新中提到的,我创建了一个新的主/细节模板,并直接从细节 View (中的一个按钮)简单地呈现了一个弹出框。它不会解散。
最佳答案
我也遇到了这个问题。我从主视图 Controller (UISplitViewController) 模态地(作为表单)呈现一个 View Controller 。这个问题只出现在 iPad 上(可能 iPhone 6+ 横向模式也有,但我没有检查)。我最终在我的展开操作方法中执行了以下操作(使用 Swift),并且效果很好。
if !segue.sourceViewController.isBeingDismissed() {
segue.sourceViewController.dismissViewControllerAnimated(true, completion: nil)
}
关于ios - Unwind segue 在非模态时不会关闭自适应弹出窗口呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28247727/