firebase 在 Swift 中关闭重载表?

Posted

技术标签:

【中文标题】firebase 在 Swift 中关闭重载表?【英文标题】:firebase dismiss reload table in Swift? 【发布时间】:2017-10-15 22:17:23 【问题描述】:

我有 3 个视图控制器:

VcA:我使用观察者从数据库中读取数据,并通过 segue 传递给 VcB。

VcB:我读取数据并显示它,我用一个按钮调用 VcC 来更新数据,并使用 segue 传递数据。

VcC:一个静态表视图,我在其中更新数据并保存它们。

问题是,当我在保存 VcC 后关闭并返回 VcB 时,所有数据都是旧的,即使在 firebase 中所有数据都已完美更新。

以 VcB 为例,我读到这样的标题:

 var groupName: String?

比在 didAppear 中:

 Name.title = groupName

无论如何,如果我也从 VcB 回到 VcC,表的所有数据都是旧数据。

为了更清楚:

我在VcA中调用数据库

点击表格中的名称,将数据传给Vcb,目前一切正常,title等vars都ok

现在我单击 EDIT 并调用 VcC,我在其中更新数据、进行更改和保存的表,

在保存 VcC 后,我会返回 VcB -> 标题仍然是 p2,但在 firebase 中不是!

我再次点击EDIT返回VcC(编辑表),标题是旧的

我认为我必须从 db 中调用数据...无论如何要在不刷新 firebase 数据的情况下执行此操作?

我知道如果我在全部保存好后回到 VcA 但我真的需要去 VcB,我该怎么办?

我发现很多线程,这是最相似但不确切的情况...... Reload tableView after dismiss a viewController

【问题讨论】:

您能否提供您尝试读取数据的 VcB 的代码? 使用delegate。当您返回 VcB 时,您将能够从 VcC 调用 reloadData。 @Woof 我添加了我阅读代码的方式 @HaVaNa7 我仍然看不到获取数据库的 VcB 代码。请将其添加到您的问题中 【参考方案1】:

如果我能正确地遵循这一点。

VC:

protocol %NAME%Delegate

    func reloadData()



class VcC: UIViewController /*(or table)*/
    var mDelegate : %NAME%Delegate?


    //in the func you use to dismiss self (VcC)
    //mDelegate?. reloadData()


VcB:

class VcB: UIViewController /* (or table)*/,%NAME%Delegate  
    func reloadData()
       tableView.reloadData()
       //OR
       //Observer for Firebase here to gather the new information. Make sure to reset all datasources if you do this.
    

【讨论】:

thnx 但在 VcB 中我有一个简单的 ViewController 而不是表,该表仅在 VcC 中 无论如何它都会起作用。我只是不知道要添加哪个类。它适用于“视图”和“表格”。 我做到了,但是当我到达 VcB 时,标题仍然是旧标题,也许我的解雇方法有问题? _ = navigationController?.popViewController(animated: true) 确保在调用方法之前调用mDelegate?.reloadData()。 ***.com/questions/12561735/… 这是您尝试完成的一个完美示例。非常详细的答案。

以上是关于firebase 在 Swift 中关闭重载表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中关闭 ViewController?

使用 react-native-firebase 在 Android 中关闭应用程序时未收到 fcm 消息

如何在 Swift 中关闭和完成处理程序后获取数据

在 SWIFT 中关闭 segue 之前保存变量

如何从 Swift 中的主线程中关闭

Swift:在 AFNetworking 调用中关闭的未包装选项