【发布时间】:2016-08-02 07:05:28
【问题描述】:
所以我有三个ViewControllers:A、B 和 C。我在 ViewControllerB 中有一个来自 firebase 的侦听器,当它被激活时,如果您当前在 ViewControllerC 中,它应该驳回ViewController C。但是,如果你在ViewController B,它不应该驳回ViewController A。我到目前为止的代码是:
self.parentViewController?.dismissViewControllerAnimated(true, completion: nil)
在ViewController B 的侦听器中。我遇到的问题是,如果我在ViewController B 中,它会忽略它。我应该在这个代码中添加什么(比如某种if 语句)来检查用户当前是否在他的设备上的ViewController C 中,然后关闭它,否则,什么也不做.
【问题讨论】:
-
当你在那个视图控制器中时关闭监听器
-
如果您在特定的视图控制器中,可以尝试将变量设置为某个值,并且仅当该变量具有特定值时才调用上述代码。
-
简而言之,您的意思是视图 B 正在观察 Firebase。如果用户在视图 C 中并且视图 B 收到事件,则视图 C 应该关闭。如果他们在视图 B 或视图 A 中,则什么也不做。对吗?
-
是的 Jay 先生,这是正确的,我仍然没有找到类似(“如果您当前在此视图控制器中,则关闭...”之类的方法)
-
如何在您的 AppDelegate 或主视图控制器中实例化三个视图控制器。跟踪哪个 viewController 是活动的 - 这可以通过多种方式完成,但最简单的方法是在 prepareToSegue 中标记一个 appDelegate 变量。每当您从一个切换到另一个时,请更新变量。然后你总是知道用户在哪一个。然后当你收到 Firebase 事件时,轮询变量以查看使用 UIViewController 的位置,如果 activeViewController = C 则关闭它。
标签: swift firebase navigation