Je demande de l'aide pour déterminer la bonne approche
Lorsque je clique sur la photo, j'ai besoin de passer du texte et d'elle à la nouvelle VC, mais le problème est que le projet a une excellente structure de profondeur p>
La cellule réside dans le Comment puis-je implémenter correctement le transfert?
(Le nombre de cellules est généré automatiquement) p> Une autre complication est que le code de la cellule avec lequel je travaille réside dans une autre cellule. P> celles-ci. Le transfert d'informations doit également être écrit en elle. P> CollectionView code>, qui se trouve dans le
TableViewCell code> p>
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 Réponses :
Ajouter un VaR
delegate?.sendData(image)
Merci, j'ai essayé de faire comme vous le décrivez mais cela ne sort pas. Je vais mettre à jour la question, s'il vous plaît jeter un oeil.
@ Сева cell.delegate = auto code> devrait être à l'intérieur de la tableView
Cellfrowat code> pas la collection
ça ne marche toujours pas. Dans la première VC où j'ai une vue de table, j'ai prescrit realpfotocell.delegate = auto code> et avoir une erreur
Impossible d'attribuer la valeur de type 'DétacherViewController' pour taper "ImagesViewController" Code>
Vous avez deux options: On est SH_KHAN Répondre à l'aide de la délégation. p>
ou vous pouvez utiliser des observateurs de notification. p>
Cette question a été posée avant ... p>
Vous pouvez utiliser le protocole de délégué dans ce cas. Vous pouvez mettre en œuvre ce protocole. Veuillez trouver ci-après un exemple de code pour cela.
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) } }
Dupliqué possible de Passage entre les contrôleurs de vue