【问题标题】:Not in view hierarchy with only 2 view controllers?不在只有 2 个视图控制器的视图层次结构中?
【发布时间】:2012-11-29 23:41:00
【问题描述】:

我有两个通过 segue 相互连接的视图控制器。当有人按下按钮时,他们会转换到 viewcontroller2。在那个 viewdidload 中,然后我通过使用以下代码启动 segue “backs”来将它们启动回原始视图控制器:

 [self performSegueWithIdentifier: @"backs" sender: self];

但是,它一直拒绝这种简单的转换,说我的视图控制器超出了层次结构?只有两个视图控制器,所以我想知道这怎么可能?

【问题讨论】:

    标签: xcode uistoryboardsegue


    【解决方案1】:

    viewDidLoad 太早了。视图已加载,但尚未放入视图层次结构中。你想等到viewDidAppear。这是视图控制器的视图实际上是完整视图层次结构的一部分的第一个时刻。 (即使那样你也可能不得不使用延迟性能;我不确定。)

    关于您所说的另一个问题是,如果您通过 segue 从视图控制器 A 转到视图控制器 B,则无法通过正常的 segue 返回。您必须使用新的“展开”转场功能,否则手动返回(例如,关闭呈现的控制器,弹出推送的控制器)。

    【讨论】:

    • 你可能会发现我的书有助于理解视图控制器的工作原理(以及它们是什么):apeth.com/iOSBook/ch19.html
    • 哇,展开功能非常愚蠢。有没有其他的实现方式?
    • 我认为 unwind 很棒。但是如果你不喜欢它(或者不理解它),就像我说的那样,就做我们在 iOS 6 之前所做的事情——手动返回,基本上就好像 segues 和 storyboards 不存在一样。
    猜你喜欢
    • 2012-10-16
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多