我有一个集合视图,显示接下来四天的天气数据。在这个块中
func prepareCollectionViewDataSource() {
var x = self.city?.forecasts
x?.removeFirst()
self.otherDaysForecasts = x
}
这就是x的样子:
[0] : Forecast
- temperature : 296.84199999999998 { ... }
- maximum : 296.84199999999998 { ... }
- minimum : 296.84199999999998 { ... }
- description : "light rain" { ... }
- icon : "10d" { ... }
- humidity : 92.0 { ... }
- pressure : 1021.4299999999999 { ... }
- wind : 1.8600000000000001 { ... }
- date : 2016-07-18 18:00:00 +0000
我删除第一天并显示其他四个。从JSON我每三个小时得到一次天气数据。它是一个数组,我想每天只显示一个数据。
有任何建议如何做到这一点?
答案 0 :(得分:1)
在集合视图中,首先,您需要准备数据,然后使用UICollectionViewDataSource
您的数据应该是类变量,因此可以从类
中的任何方法访问它var forcastData = [] // this is your x, array of dictionary
这是您的UICollectionViewDataSource
extension YourViewController : UICollectionViewDataSource {
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return forcastData.count
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! UICollectionViewCell
// Here is the main part to configure the cell
let data = forcastData[indexPath.row]
// let say you have label for temparature that we want to set from your data in json dictionary
cell.temperatureLabel.text = String(format: "%.2f MB", data.["temperature"].double!)
return cell
}
}
有简单的指南here。另请尝试详细了解UICollectionView