从位于tableviewCell的collectionViewCell传递图像

时间:2019-05-29 17:32:34

标签: swift uitableview uicollectionview

我需要帮助来确定正确的方法

当我单击图片时,我需要将文本和她传递给新的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 个答案:

答案 0 :(得分:1)

添加变量

class RealPhotoInfoTableViewCell: UITableViewCell {
   weak var delegate:VCName?

在表cellForRowAt

cell.delegate = self

现在您可以在集合的didSelectItemAt内完成

delegate?.sendData(image)

答案 1 :(得分:0)

您有两个选择: 一种是Sh_Khan使用委派回答。

或者您可以使用通知观察器。

这个问题已经被问过了...

答案 2 :(得分:0)

在这种情况下,您可以使用委托协议。您可以实现该协议。请为此找到以下示例代码。

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)
    }
}