[英]UICollectionView CellForItemAtIndexPath not getting called
[英]UICollectionView cellForItemAtIndexPath not getting Called When calling server using Alamofire
幾天前,我一直在嘗試解決我的問題,我在互聯網上搜索了很多解決方案,但沒有一個有效。 問題 ...
我正在一個iOS項目中,用戶可以在其中拖放項目,並且這些項目將根據其移動順序獲得優先級。 出於拖放目的,我使用一個名為DragDropColelctionView的庫
我創建了一個靜態數據以顯示在Collectionview單元內。 CollectionView單元格包含一個圖像和一個標簽。 我在ViewDidLoad中創建了此靜態數據,並在ViewController中顯示了帶有項目的CollectioViewCell。 但是,當我嘗試將動態數據放入“集合”單元格cellForItemAtIndexPath時,沒有得到調用。 為了獲取數據,我使用Alamofire,並且注意到當我用動態數據填充模型時,永遠不會調用它。 但是,當我創建靜態數據並在Alamofire Scope之外調用時, cellForItemAtIndexPath被調用或僅在我的靜態數據上被調用。
這是我的模特
class GroupsModel {
var ItemName : String?
var ItemPicture : UIImage?
init?(ItemName : String , ItemPicture : UIImage? )
{ print("Initilaised")
self.ItemName = ItemName
self.ItemPicture = ItemPicture
}
}
還有我的Alamofire要求
Alamofire.request(.GET, App.AppHomeURL() + "Load_Items" , parameters : ["userid": "\(cache.getObjectid())"]).responseJSON
{
response in
switch response.result
{
case .Success(let _result) :
let jsoResponse = JSON(_result)
var _itemName : String = ""
var _itemImage : UIImage
do
{
if let Dataobject = resposne!["Data"] as? NSDictionary
{
if let _items = Dataobject["Items"] as? [NSDictionary]
{
for itemDetails in _items
{
print("Item Name : \(itemDetails["itemName"]!)")
_itemName = itemDetails["itemName"]! as! String _itemImage = UIImage(named: "Sample Profile")!
let itemInfo = GroupsModel(ItemName: _itemName, ItemPicture: ItemPicture)!
//
self.data += [itemInfo]
}
}
else
{
print("No Items")
}
}
}
break;
case .Failure(let _er) :
print("An Error Occured : \(_er)")
break;
}
}
和CellForRowAtIndexPath函數
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("collectionViewCell", forIndexPath: indexPath) as! CollectionCell
let _data = data[indexPath.row]
print("Row : \(indexPath.row))")
cell.lblGroupName.text = _data.strgroupName
cell.ItemImage.image = _data.ItemPicture
cell.ItemImage.layer.cornerRadius = cell.ItemImage.frame.width / 2
cell.ItemImage.clipsToBounds = true
return cell
}
填充數據UICollectionView
后,您無需重新加載UICollectionView
。
使用: myCollectionView?.reloadData()
在響應底部添加collectionView?.reloadData()
像這樣
Alamofire.request(.GET, App.AppHomeURL() + "Load_Items" , parameters : ["userid": "\(cache.getObjectid())"]).responseJSON
{
response in
switch response.result
{
case .Success(let _result) :
let jsoResponse = JSON(_result)
var _itemName : String = ""
var _itemImage : UIImage
do
{
if let Dataobject = resposne!["Data"] as? NSDictionary
{
if let _items = Dataobject["Items"] as? [NSDictionary]
{
for itemDetails in _items
{
print("Item Name : \(itemDetails["itemName"]!)")
_itemName = itemDetails["itemName"]! as! String _itemImage = UIImage(named: "Sample Profile")!
let itemInfo = GroupsModel(ItemName: _itemName, ItemPicture: ItemPicture)!
//
self.data += [itemInfo]
}
}
collectionView?.reloadData()
else
{
print("No Items")
}
}
}
break;
case .Failure(let _er) :
print("An Error Occured : \(_er)")
break;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.