从第三或第四个视图控制器返回到根视图控制器 Swift

3
我有3个视图控制器,并以模态方式呈现,如何解除这些视图控制器并直接从第三个右侧返回到第一个(根)视图控制器。
基本上,当我从第三个调用dismissViewControllerAnimated时,我希望它也可以解除底层的第二个视图控制器并直接返回到第一个视图,释放其他内存。
编辑
简单地说,想要从右侧的第三个视图返回到第一个,而不必通过解除中间的视图。显然,我不能只从第三个呈现第一个,因为那可能会导致大量的内存泄漏。 enter image description here

你好,我遇到了同样的问题。你解决了吗? - Marie Dm
你需要将所有内容放在一个容器视图控制器中,并使用transitionFromViewController:toViewController:方法。 - Kyle Goslan
实际上,我已经成功将一个按钮连接到了故事板上的unwindToViewController,并且它可以关闭所有以模态方式呈现的视图控制器。如果我将来需要在没有按钮的情况下执行相同的操作,也许我会使用这个方法,谢谢。 - Marie Dm
2个回答

1
使用NSNotificationCenter来实现。当你想要关闭所有视图控制器时,可以发布一个通知:
NSNotificationCenter.defaultCenter().postNotification("dismissNotification")

然后在你的 viewWillAppear 函数中使这些视图控制器注册以便监听此类通知:

 NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("dismissFunction"), name: "dismissNotificaiton", object: nil)

最后,在你的dismissFunction中调用dismissViewController:
self.dismissViewControllerAnimated(true, completion: nil)

“dismissViewControllerAnimated” 似乎总是会关闭顶部视图控制器,即使在底层视图控制器中加上“self”前缀也是如此。 - Kyle Goslan
嗯...你有没有考虑将模型视图控制器设置在另一个导航控制器上?这样,如果你关闭主导航控制器,所有其他控制器都会立即关闭。 - Dani

0
尝试一下这个:
self.dismissViewControllerAnimated(true, completion: nil)

如果这是你需要的,请告诉我 :)


这将删除当前视图并显示底层视图控制器。请查看我的编辑以使其更清晰。 - Kyle Goslan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接