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 中关闭重载表?的主要内容,如果未能解决你的问题,请参考以下文章