ios - 无法附加值并在 Collection View 中显示

标签 ios arrays swift xcode uicollectionview

我有一个 api 调用,我将在其中获取所有名称,并将附加到一个 var 以显示在我的 Collection View 标签中。但值不会附加到我的 var。

这里代码:

var mobkam = [String]()
override func viewDidLoad() {
        super.viewDidLoad()
            self.getallLoans()

}

func getallLoans(){
        Manager.sharedInstance.getallLoans { (data, err) in
            if let _  = err{

            }else{
                if let dataa = data as? String{
                    if let dataFromString = dataa.data(using: String.Encoding.utf8, allowLossyConversion: false) {
                        let json = JSON(data: dataFromString)



                        print(json) // correctly display all names like ["1","2", etc]


                       self.mobileOprator.removeAll()
                        for (_, val) in json {


                            print(val.rawString()) // displaying the correct each items names


                            self.mobkam.append(val.rawString()!)
                        }
                    }
                }

            }
        }
    }


    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return self.mobkam.count
    }


    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {


        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! NameCollectionViewCell


        cell.NameLabel.text = self.mobkam[indexPath.item]


        return cell
    }

我做错了什么?无法解决。我遗漏了什么。请帮助我。

谢谢!

最佳答案

getallLoans 中加载所有值后,您只需调用 collectionView.reloadData()

当您进行 API 调用时,这是一个异步任务,需要一点时间才能完成。您的 Collection View 将已经加载了它的数据源,因此您需要通知它数据已更改。然后它将再次调用 CollectionViewDataSource 委托(delegate)方法并根据更新后的数据刷新 View 。

for (_, val) in json {
    print(val.rawString()) // displaying the correct each items names
    self.mobkam.append(val.rawString()!)
}

collectionView.reloadData()

关于ios - 无法附加值并在 Collection View 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46974017/

相关文章:

ios - View Controller 加载了两次

ios - 单元格中的 CGAffineTransform 动画不起作用

ios - 核心数据更新代码正在使用 Swift 复制记录

ios - QT IOS 链接器错误入口点(_main)未定义

ios - 自 2018 年秋季以来,我在哪里可以找到 Apple 产品的 UDID?

arrays - 如果通过重复加倍完成,为什么调整数组大小操作的时间与 N 成正比?

javascript - 使用 lodash 将 JSON 转换为对象数组

ios - 如何在 UIView 中绘制与 MKPolyline 相同的 UIBezierPath

ios - 将核心数据上保存的数据填充到 tableView 上

arrays - Perl中 'one dimensional'散列对数组的优势