Привет, я много искал и не мог получить подходящий ответ.Я пытаюсь заполнить collectionView данными, полученными в Интернете с помощью API.Данные возвращаются, но collectionView cellForItemaAt никогда не запускается, потому что, когда я использую операторы печати, ничего не отображается.
Не могу понять, в чем проблема, я посмотрел эти ссылки, но они не помогли:
collectionView cellForItemНе вызывается
cellForItemAt не вызывается в collectionView
cellForItemAt, никогда не вызываемый в классе, расширяет UICollectionViewController
вот метод cellForItemAt:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
collectionView.dequeueReusableCell(withReuseIdentifier: "ItemCollectionViewCell", for: indexPath) as! ItemCollectionViewCell
cell.ItemNameLabel.text = itemArray[indexPath.row].name
print(itemArray[indexPath.row].name)
cell.priceLable.text = itemArray[indexPath.row].price + " " + itemArray[indexPath.row].currency
guard let url : URL = URL(string: itemArray[indexPath.row].image) else {return cell}
cell.imageView.sd_setShowActivityIndicatorView(true)
cell.imageView.sd_setIndicatorStyle(.gray)
cell.imageView.sd_setImage(with: url, placeholderImage: UIImage(named:"placeholderImage"), options: .refreshCached, completed: nil)
return cell
}
вот метод, который я использую для извлечения данных:
func getAllItemsApiMethod()
{
itemArray.removeAll()
if Reachability.sharedInstance.connectedToNetwork()
{
if searchShops == true {
PostDict = ["page" : pageNumber ,"text" : searchKeyword,"searchShop" : "1"]
}else{
PostDict = ["page":"1","text":searchKeyword]
}
print(PostDict)
StartIndicator()
WebServices.getItemsMethod(url: itemsUrl, parameters: PostDict) { (JsonResponse) in
print(JsonResponse)
StopIndicator()
let json : JSON = JSON(JsonResponse)
self.updateItemData(json: json)
print(json)
}
}
else
{
FTIndicator.showToastMessage(Constant.NoInternet)
}
}
func updateItemData (json : JSON) {
let item = Item()
for i in 0...json["data"].count - 1{
item.name = json["data"][i]["title_ku"].stringValue
item.price = json["data"][i]["price"].stringValue
item.image = json["data"][i]["image"].stringValue
item.currency = json["data"][i]["currency"].stringValue
}
// useItemsCell = true
self.collectionViewHome.reloadData()
}
, а вот метод, который я использую для вызова getAllItemsAPI:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
guard let searchKeyword = txtFldSearch.text else {return false}
getAllItemsApiMethod()
collectionViewHome.reloadData()
self.view.endEditing(true)
txtFldSearch.text = ""
return true
}
вотМетод numberOfItems:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
return itemArray.count
}
Я также установил методы datasource и collectionViewDelegate как self.
Я довольно долго искал ответ, чтобы найти ответ.Любая помощь очень ценится