![](/img/trans.png)
[英]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.