Не могу передать данные из TableViewController в другой ViewController
Ребята, помогите решить проблему.
Пытаюсь передать данные, которые распарсил, из выбранной ячейки в другой VC. Что делаю не так?
Мой TVC:
class TableViewController: UITableViewController
private var urlOfPersons = "https://rickandmortyapi.com/api/character"
private var result: [Result]?
override func viewDidLoad() {
super.viewDidLoad()
fetchData()
}
// MARK: - Table view data source
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 20
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
if let count = result?.count, count > 1 {
let lastElement = count - 1
if indexPath.row == lastElement {
getData()
}
}
let dataIndex = (result?[indexPath.row])!
cell.getImageData(from: dataIndex)
cell.nameLabel.text = (self.result?[indexPath.row].name ?? "o")
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "showImage", sender: indexPath)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard segue.identifier == "showImage" else { return }
let indexPath = tableView.indexPathForSelectedRow
let controller = segue.destination as! ShowViewController
controller.showResult = result ?? []
let dataIndex = (result?[indexPath!.row])
controller.pictureImage = dataIndex?.image
controller.pictureName = dataIndex?.name
}
// MARK: - UICollectionViewDelegate
func fetchData() {
result = []
getData()
}
func getData() {
guard let url = URL(string: urlOfPersons) else { return }
URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let data = data else { return }
do {
let decoder = JSONDecoder()
let decode = try decoder.decode(Characters.self, from: data)
self.result?.append(contentsOf: decode.results)
DispatchQueue.main.async {
self.tableView.reloadData()
}
} catch let error as NSError {
print(error.localizedDescription)
}
}.resume()
}
VC, в который хочу передать данные: class ShowViewController: UIViewController
@IBOutlet var pictureLabel: UIImageView!
@IBOutlet var nameLabel: UILabel!
var pictureName: String?
var pictureImage: String?
override func viewDidLoad() {
super.viewDidLoad()
nameLabel.text = pictureName
pictureLabel.image = UIImage(named: pictureImage ?? " ")
}