【发布时间】:2015-05-21 22:31:29
【问题描述】:
我是一位经验丰富的 iOS 开发人员,但我偶然发现了一个我不完全确定如何解决的问题。
比如说我有 3 个 UIViewController,分别是 A、B 和 C。 A 是根,B 出现在 A 之上,C 出现在 B 之上。
B 和 C 使用 presentViewController:animated:completion 呈现: 所以表示堆栈看起来像这样。
[A] -> [B] -> [C]
在我的程序中,我想解雇 B 并且只解雇 B。 dismissViewControllerAnimated:completion: 表示如果我解雇 B,它会要求其 A 解雇 B,然后也会解雇 C。我不要那个。我只想解雇 B,以便 A 选择 C 作为它的presentedViewController,就像这样
[A] -> [C]
这可能吗?
--------注意事项-------
我意识到这似乎更适合另一种表示模式,其中 A、B、C 将是共同 parentViewController 下的兄弟姐妹。但我可能不会使用它。
presentingViewController/presentingViewController 模式就像一个双向链表。但是,由于这些属性是只读的,我无法进行任何节点操作。
【问题讨论】:
-
似乎添加模拟演示动画的子视图将是解决方案
-
为什么只需要解雇 B?为什么不等到需要解除 C 后再解除 B(这也会解除 C)?
-
因为 B 将不再被使用,我不希望它留在内存中。
-
也许你可以在没有动画的情况下关闭视图控制器 B 和 C,然后在没有动画的情况下呈现另一个 C。虽然不太正确。
-
如果我这样做了,那么它将释放 C。迫使我将所有数据保存在某个地方。然后,如果我再次显示它,它将再次调用 viewDidLoad 并确保它填充了我之前保存的数据。不仅。 C 将闪烁片刻。
标签: ios objective-c uiviewcontroller presentviewcontroller