在拆分视图中模态关闭 MWPhotoBrowser 视图控制器

Posted

技术标签:

【中文标题】在拆分视图中模态关闭 MWPhotoBrowser 视图控制器【英文标题】:Dismissing MWPhotoBrowser View controller Modally in Split View 【发布时间】:2012-08-28 18:53:27 【问题描述】:

遇到了一个障碍,希望在这里获得一些见解。

概述:通用应用。 iPhone部分效果很好。 iPad 部分有一个拆分视图控制器。主视图是一个表格视图(左侧),用户在其中选择一行并显示其详细信息(右侧)。很标准的东西。

我使用的是 Xcode 4.4.1 版,我的项目使用的是 Core Data、Storyboards 和 ARC。

DetailViewController: 在详细信息上是一个按钮,该按钮通过自定义视图按日期显示用户注释的另一个表视图(在详细信息内)。每个笔记都可以有一个与之关联的图像。如果笔记有图像,则会显示一个带有照片图标的按钮。

到目前为止的示例截图:

MWPhotoBrowser:当按下照片图标的按钮时,我调用 MWPhotoBrowser(一个以标准方式显示图像的精彩库)来显示图像。单击显示一个选定的图像,双击显示当前表格上的所有图像,首先查看所选图像。图像全屏显示。

为了显示照片浏览器,我使用以下代码:

// Create the browser view.
MWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithDelegate:self];

// Set browser options.
browser.wantsFullScreenLayout = YES;
browser.displayActionButton = YES;
[browser setInitialPageIndex:self.buttonRow];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:browser];

[self presentModalViewController:navController animated:YES];

navController 允许我包含一个带有“完成”按钮的导航控制器,该按钮调用 doneButtonPressed。

问题:在我按下“完成”按钮之前,上述所有操作都运行良好。全屏照片浏览器正确关闭。不幸的是,用户按下照片图标按钮的右侧的表格视图现在消失了(黑色)。我认为在照片浏览器被模态关闭后,NotesViewController(右侧)会保留在那里。在拆分视图中调用模型视图控制器是否会导致其他视图控制器被删除?

显示问题的示例截图:

详细视图控制器(右侧)上的堆栈应该是 DetailViewController > NotesViewController > 然后以模态方式调用 MWPhotoBrowser。关闭照片浏览器后,我的 self.navigationController.viewControllers.count 等于 1,我希望它是 2。

这是关闭 MWPhotoBrowser 的代码:

- (void)doneButtonPressed:(id)sender 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 

    [self dismissViewControllerAnimated:YES completion:nil];

.
.
.

希望有人能帮我解决这个问题。

一如既往,非常感谢任何帮助。谢谢!

【问题讨论】:

【参考方案1】:

我在 NoteViewController 中解决了我的问题(MWPhotoBrowser 关闭后该区域变黑)。

在 viewWillAppear 中,我将 tableview 设置为 nil(以防止单元格重叠)并重新加载我的表格数据。

self.tableView = nil;

[self.tableView reloadData];

这适用于 iPhone,并且当没有从 iPad 上的 MWPhotoBrowser 的全屏显示返回时。由于某种我不明白的原因,上面的代码导致了这个问题。我添加了额外的逻辑来检查我是否从全屏显示返回,现在一切都很好。有时间的话我会多研究的。

【讨论】:

以上是关于在拆分视图中模态关闭 MWPhotoBrowser 视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

iPad 模态视图关闭更改父视图方向

应用程序尝试以模态方式呈现拆分视图控制器(我的应用程序中没有拆分视图)

SwiftUI - 如何关闭假的模态视图 - 从里面的第二个视图,用关闭按钮?

将关闭按钮添加到部分不在视图中的模态视图

从 uitabbarController 视图中关闭模态视图

关闭模态视图并调用初始视图控制器