我有一个 View Controller ,它有一个 UICollectionView,其中包含从 Firebase 中提取的信息。当用户访问此 View Controller 时,他们的信息将放置在 Collection View 单元格中。
但是,当用户注销并使用其他帐户登录时,之前用户的数据会保留在 Collection View 中,而不是用新用户的信息重新填充。
现在一切都从 viewDidLoad()
调用:
override func viewDidLoad() {
super.viewDidLoad()
loadData()
loadOngoingQuest()
collectionView.dataSource = self
collectionView.delegate = self
}
loadData()
和 loadOngoingQuest()
将信息从 Firebase 提取到用于填充 Collection View 的数组中。
我尝试在 viewWillAppear()
中添加所有内容,但它会导致一些故障,因为 Collection View 涉及滚动和其他我不想在每次 View Controller 出现时都运行的动画。
基本上我只想在每次用户注销时重新加载整个 View Controller 。我该怎么做?
最佳答案
你应该做这样的事情,查看评论了解更多信息:
let firebaseAuth = FIRAuth.auth()
do {
try firebaseAuth?.signOut()
// clear the array that your collectionView is based on
// reload your collectionView (which will clear all the data since your array is empty)
} catch let signOutError as NSError {
print ("Error signing out: %@", signOutError)
}
更新:
另一种处理方式:
创建一个具有以下属性的 Struct
:
struct Global {
var isNewUser = false
}
每当您注销用户时,请执行以下操作:
Global.isNewUser = true
然后在您的 collectionView
中检查 Global.isNewUser == true
然后重新加载所有内容,最重要的是设置 Global.isNewUser = false
.这样你就只会加载所有内容一次。
关于swift - 在 Firebase 注销时刷新 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48874247/