Передача изображения из коллекции ViewViewCell, которая находится в tableviewCell - PullRequest
0 голосов
/ 29 мая 2019

Я прошу помощи в определении правильного подхода

, когда я нажимаю на картинку, мне нужно передать текст и ее в новый VC, но проблема в том, что проект имеет большую структуру глубины

ячейка лежит в collectionView, что в tableViewCell

Как правильно осуществить передачу?(количество ячеек генерируется автоматически)

Другое осложнение заключается в том, что код ячейки, с которой я работаю, лежит в другой ячейке.

те.передача информации также должна быть записана в нем.

import UIKit
import moa

class RealPhotoInfoTableViewCell: UITableViewCell {

    @IBOutlet private weak var MyCollection: UICollectionView!

    var model: RealPhoto!

    func setCollectionViewDataSourceDelegate(dataSourceDelegate: UICollectionViewDataSource & UICollectionViewDelegate, forRow row: Int) {
        MyCollection.delegate = self
        MyCollection.dataSource = self
        MyCollection.reloadData()
    }
}

extension RealPhotoInfoTableViewCell: UICollectionViewDelegate, UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        print(model?.data.count as Any)
        return model?.data.count ?? 0
    }


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

        cell.realPhotoImage.moa.url = model?.data[indexPath.row].photo

        return cell
    } 
}

Ответы [ 3 ]

1 голос
/ 29 мая 2019

Добавить переменную

class RealPhotoInfoTableViewCell: UITableViewCell {
   weak var delegate:VCName?

Внутри cellForRowAt стола до

cell.delegate = self

Теперь вы можете сделать это внутри didSelectItemAt коллекции

delegate?.sendData(image)
0 голосов
/ 29 мая 2019

В этом случае вы можете использовать протокол делегирования.Вы можете реализовать этот протокол.Пожалуйста, найдите следующий пример кода для этого.

protocol ImageSelectionDelegate {
    func imageClicked(imageURL: String)
}

//Class A
class A : ImageSelectionDelegate{
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //your existing code
        cell.delegate = self
    }
    //Implement that protocol
    func imageClicked(imageURL: String){
        //You will get url for tapped image
    }
}

class RealPhotoInfoTableViewCell{
    weak var delegate : ImageSelectionDelegate? = nil
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        delegate.imageClicked(model?.data[indexPath.item].photo)
    }
}
0 голосов
/ 29 мая 2019

У вас есть два варианта: Одним из них является ответ Sh_Khan с использованием делегирования.

Или вы можете использовать уведомления наблюдателей.

Этот вопрос был задан ранее ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...