Как перезагрузить ячейку json CollectionView внутри ячейки tableView, используя uirefreshcontroll в swift - PullRequest
0 голосов
/ 14 мая 2019

Я делаю приложение, используя viewcontroller, внутри viewcontroller есть представления таблицы и представления коллекции. Я попытался перезагрузить json в ячейку табличного представления, используя uirefreshcontrol во ViewController, но json не загрузился.

ViewController> TableView> TableViewCell> CollectionView> CollectionViewCell.

вот мой viewController

import UIKit

class MainViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var tableView: UITableView!
var refreshControl = UIRefreshControl()
var reloadData : MainTableViewCell!

override func viewDidLoad() {
    super.viewDidLoad()
    refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
    refreshControl.addTarget(self, action: #selector(handleRefresh(_:)), for: UIControl.Event.valueChanged)
    tableView.addSubview(refreshControl)
}

@objc func handleRefresh(_ refreshControl: AnyObject) {
    self.tableView.reloadData()
    self.reloadData?.fetchData()

    DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) {
        refreshControl.endRefreshing()
    }

}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "MainTableViewCell", for: indexPath) as! MainTableViewCell
    return cell
}
}

вот мой столик Cell

import UIKit
import SwiftyJSON
import Alamofire 
import Kingfisher

class MainTableViewCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {

var mainModel : [ModelMain] = []
@IBOutlet weak var collView: UICollectionView!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
    fetchData()

}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

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

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MainCollectionViewCell", for: indexPath) as! MainCollectionViewCell

    let url = mainModel[indexPath.row].images
    cell.titleImg.kf.setImage(with: URL(string: url), placeholder: UIImage(named: "cancel"), options: [.transition(.fade(1)), .scaleFactor(UIScreen.main.scale)])

    return cell
}

func fetchData(){
    Alamofire.request("https://jsonplaceholder.typicode.com/photos", method: .get, encoding: URLEncoding.default).responseJSON{

        (response) in

        switch response.result{
        case .success(let value):
            let json = JSON(value)

            for item in json.array!{
                let thumbnailUrl = item["thumbnailUrl"].string

                self.mainModel.append(ModelMain(images: thumbnailUrl ?? ""))
                print(self.mainModel.count)
            }
            self.collView.reloadData()
        case .failure(let error):
            print(error)
        }
    }
}
}

Я пытаюсь прокомментировать функцию func fetchData (), чтобы проверить перезагрузку данных или нет, но данные не перезагрузятся.

...