Я делаю приложение, используя 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 (), чтобы проверить перезагрузку данных или нет, но данные не перезагрузятся.