【问题标题】:ViewController hierarchyViewController 层次结构
【发布时间】:2012-10-21 15:28:52
【问题描述】:

我有这样一个场景: 我有一个 MovieViewController 它作为我的应用程序的介绍(它是我故事板中的初始视图控制器)。它通过以下方式转到另一个名为 MenuViewController 的视图控制器:

  • 电影结束
  • 检测到触摸

所以现在的顺序是这样的: MovieViewController -----> MenuViewController --->(然后三个按钮对应不同的View)

根据我在这里的旧问题:Warning about window hierarchy

我对应答案并编辑我的代码,但我的调试器中仍然出现错误。

警告:尝试在 谁的视野不在窗内 等级制度!

还是出现了好几次,有没有办法让MenuViewControllerMovieViewController显示后成为主视图?或在电影结束/放映后将其关闭/删除。

感谢您的指导。

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    为了尝试回答这个问题,我将假设当你说

    主视图

    你的意思是根视图。

    一个简单的解决方案是,当您启动应用程序时,会创建一个导航控制器来管理视图控制器的堆栈。这个导航控制器有一个根控制器,你应该将它设置为MenuViewController(这应该是第一个加载的视图控制器),因为这是你想要返回的控制器。您可以将MovieViewController 显示为MenuViewController 之上的视图,这样当MovieViewController 被关闭时,您将看到MenuViewController

    附带说明一下,在 iOS 编程中呈现启动画面通常不是一个好习惯,其中启动画面是一个没有任何功能价值的屏幕,除了在加载和呈现有关信息时延迟主视图的呈现应用程序。

    【讨论】:

    • 您是指splash screen 还是appdelegate?我没有在那里展示它,它在另一个视图控制器中。你能解释一下你说的最后一段吗:On a side note, it is generally not good practice in iOS programming to present a splash screen. 因为我有点新。
    • appdelegate 不是呈现给用户的东西,它有助于管理应用程序级别的属性和操作。我在答案中添加了一个简短的解释,说明我所说的闪屏是什么意思
    • 所以我的应用可能会被它拒绝?但我的客户希望在应用中进行介绍。
    • 不,不会因此而被拒绝。
    • 你的应用程序。经过?还是被拒绝了?
    【解决方案2】:

    您可以使您的MenuViewController 初始视图控制器,并在加载后立即调用:

    [self presentModalViewController:MovieViewController animated:NO];
    

    然后,当您想从屏幕上删除 MovieViewController 时,只需调用:

    [self dismissModalViewControllerAnimated:YES];
    

    MovieViewController.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 2014-07-23
      相关资源
      最近更新 更多