当前位置: 首页 > 知识库问答 >
问题:

iOS 6情节提要:模式视图未解除

宗政招
2023-03-14

我使用的是Xcode 4.5和iOS 6。

我正在构建一个使用故事板的通用应用程序。我有一个视图控制器,它在导航栏中有一个按钮。当点击按钮时,我正在使用一个segue来显示另一个视图控制器作为模式。模态视图控制器在其导航栏中有一个“取消”和一个“保存”按钮。在情节提要中,模式按钮项链接到新退出操作上的操作,该操作应展开到父视图控制器,取消模式,并调用操作处理程序。

这在iPhone上运行良好,但我在iPad上看到了问题。在iPad上,当modal以全屏显示时,一切正常。当我将模式更改为页面工作表或表单工作表(在我的情况下,这是所需的行为)时,会调用操作处理程序,但不会自动取消模式视图控制器。

有人看到过这种行为吗?你做了什么来纠正它吗?

谢谢你。

共有3个答案

宗政金鹏
2023-03-14

我也有同样的问题,所以我做的是:

- (IBAction)closeSalesJournal:(UIStoryboardSegue *)segue
{
    // Unwind Segue
    NSLog(@"Closed Sales journal VC");

    // For iPad, need to dismiss the view controller manually
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
}

这样,我肯定会离开iPhone的标准方式,用iPad强制解雇。

东门阳飇
2023-03-14

如果模态视图控制器被自动关闭,那就太酷了,但是在Apple的示例中,他们为segue使用了模态转换,然后明确调用dismisViewControlllerAnimated:完成:在展开(Exit)操作中解雇它。

龚鸿雪
2023-03-14

谢谢你问我这个问题,因为我刚刚遇到了同样的问题。我认为这是一个bug,但我还没有向苹果公司提交。同时,简单的解决方法是在您的展开:实现中调用dismissViewController:animated:(即,在通过退出图标连接到展开序列的操作方法中),从而降低模式视图的亮度。

我对这个解决方案唯一担心的是,如果这是一个错误并且Apple最终修复了它,他们的修复会使用此解决方案破坏任何代码吗?只有时间会告诉我们...

后期编辑:我发现了一个更好的解决方法。子类化要展开到的类的父(容器)类,并在那里实现展开。例如,在我的应用程序中,情况如下所示:

UISplitViewController
    UINavigationController
        MasterViewController
    UINavigationController
        DetailViewController ----> modal segue ----> ThirdViewController

从第三视图控制器返回到DetailViewController的退出/展开部分演示了这个错误——调用了取消:实现,但表单视图没有被取消。但是如果我子类化UISplitViewController并在那里实现取消:,它可以正常工作。(取消:实现可以为空;关键是表单视图会自动被取消。)所以很明显,这是一个与容器视图控制器有关的问题,您可以通过让容器处理它来解决它。

查看我的示例项目,上传到https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p561containerViewControllerStoryboard3Bug

 类似资料:
  • 我的目标是: 我使用故事板在我的应用程序中创建视图。 我的目标是有一个视图的单一实例,它将在应用程序的所有页面中公开和链接。在我的情况下,如果有一个应用程序有许多选项卡,我希望视图将出现在所有选项卡中,并具有相同的状态。 我的尝试和做法: 我创建了一个视图,并将其嵌入到不同选项卡中的容器视图中。 打开应用程序时,视图将在所有页面上显示并工作。但是,如果我在一个视图中进行更改,它不会传播到其他视图。

  • 我有一个带有背景图像和标题标题的viewcontroller。这种观点在大多数情况下都是一样的。我将在这个viewcontroller中显示和隐藏不同的子视图。 如何使用故事板实现这一点? 我是否必须为每个子视图创建单独的XIB 还是有其他优雅的解决方案? 谢谢

  • 问题内容: 如何以编程方式为情节提要设置?我想根据不同的启动条件将情节提要板打开到其他视图。 问题答案: 如何 不 使用虚拟初始视图控制器 确保所有初始视图控制器都有一个Storyboard ID。 在情节提要中,取消选中第一个视图控制器中的“是初始视图控制器”属性。 如果您此时运行应用程序,则将阅读: 您会注意到,应用程序委托中的window属性现在为nil。 在应用程序的设置中,转到目标和选项

  • 我知道有很多关于如何在IOS6中强制定向的线程,但它们似乎都不适合我,所以现在我需要一些帮助来解决这个问题。 我有一个基于导航的应用程序,它有许多视图控制器。除了必须在横向模式下加载(用户无需先转动手机)的视图外,所有这些视图都是纵向视图。 在导航控制器的实现中,我添加了shouldAutorotate、supportedInterfaceOrientations和preferredInterfa

  • 我有一个UIViewController上有两个UIViews。在导航栏中,当按下一个按钮时,将显示一个UIView,当按下另一个按钮时,将显示另一个UIView。我想把一个UITableView上的一个视图。但是,UITableView要求UIViewController使用UITableView委托和UITableViewDataSource。在为包含UTTableView的UIView(子视

  • he Scene View control bar lets you see the scene in various view modes - Textured, Wireframe, RGB, Overdraw, and many others. It will also enable you to see (and hear) in-game lighting, game elements,