【问题标题】:Not able to append the value and display in collection view无法附加值并在集合视图中显示
【发布时间】:2017-10-27 11:31:08
【问题描述】:

我有一个 api 调用,在那里我将获取所有名称并附加到一个 var 以显示在我的集合视图标签中。但是值没有附加到我的 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
    }

我做错了什么?无法解决。我错过了什么吗。请帮帮我。

谢谢!

【问题讨论】:

    标签: ios arrays swift xcode uicollectionview


    【解决方案1】:

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

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

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

    【讨论】:

    • 哦,谢谢。但有一个疑问......在集合视图中选择方法......如果我选择任何单元格......我需要选择该单元格的名称并关闭屏幕,在主屏幕中我有一个表格视图。 ..我需要显示选定的单元格标签名称..我怎样才能实现这个........
    • 这是一个不同的问题,您可能需要使用委托将信息传递回主屏幕。在 cmets 中解释起来并不容易。当您遇到此问题时,请在您的代码和当前问题中发布另一个问题,我会尽力提供帮助
    • 我想,一旦我选择了任何单元格...我是否需要保存在任何userdefault 或任何var 中以关闭我的屏幕并显示在我的主视图控制器文本字段中??
    • 不,那不是最好的方法。你设置了一个代表......让我试着给你找个例子。也许这个:stackoverflow.com/questions/25522912/…。这个谷歌结果中有很多很好的信息:google.co.uk/search?q=delegate+pattern+swift+3
    • 我试过了,但无法解决..这是我的帖子stackoverflow.com/questions/46976309/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    相关资源
    最近更新 更多