簡體   English   中英

使用Alamofire調用服務器時未調用UICollectionView cellForItemAtIndexPath

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM