我需要帮助来确定正确的方法
当我单击图片时,我需要将文本和她传递给新的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
}
}
答案 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)
}
}