【发布时间】:2018-03-14 10:10:41
【问题描述】:
在这里,我首先从 firebase 检索图像,然后将其添加到 locationImage 数组,稍后将添加到 collectionView。
import UIKit
import Firebase
import FirebaseStorage
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
var locationImage = [UIImage(named: "hawai"), UIImage(named: "mountain")]
override func viewDidLoad() {
super.viewDidLoad()
retrieveData()
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
print(locationImage.count)
return locationImage.count
}
func retrieveData(){
let database = FIRDatabase.database().reference()
let storage = FIRStorage.storage().reference()
let imageRef = storage.child("blue blurr.png")
imageRef.data(withMaxSize: (1*1000*1000)) { (data, error) in
if error == nil{
let tempImage = UIImage(data: data!)
self.locationImage.append(tempImage)
print("HELLLLLOOOO WOOOOORRRLLLDDDD")
print(self.locationImage.count)
}
else{
print(error?.localizedDescription)
}
}
return
}
}
这里的retrieveData()函数在collectionView()之前调用。应该先调用viewdidload,我该怎么做,有人可以帮忙吗?
【问题讨论】:
-
在retrieveData() 函数中重新加载collectionview。
-
你想达到什么目的?
-
获取数据后在viewDidLoad中设置collectionView数据源。不要在情节提要中设置
-
从 IB 中删除数据源和委托,并在加载数据后将它们设置在检索数据中。 @Qazi Shahood
-
ViewDidLoad 绝对不应该首先被调用。这是预期的行为。它异步运行。您应该在加载控制器之前传递数据...
标签: ios swift uicollectionview viewdidload