2 votes

Comment obtenir le "parent" d'une cellule focalisée dans une cellule UIcollectionview avec swift - tvOS

J'ai réalisé une sorte de mise en page Netflix pour mon application tvOS, qui contient plusieurs vues de collection nommées : featuredCollectionView y standardCollectionView .

Je dispose d'une variable qui contient la cellule en cours de focalisation. La seule chose que je veux est d'obtenir la vue de la collection actuelle de la cellule sélectionnée. Quelqu'un peut-il m'aider ?

Le code

func pressedThePlayPauseButton() {

   if let focusedCell = UIScreen.main.focusedView as? UICollectionViewCell{

       let collectionViewOfFocusedCell = ...

1voto

Josh Homann Points 7888

Vous pouvez toujours remonter la hiérarchie des vues :

    var parentCollectionView = self.superview
    while parentCollectionView is UICollectionView != true {
        parentCollectionView = parentCollectionView?.superview
    }

Vous pouvez remplacer UICollectionView ci-dessus par la sous-classe que vous recherchez si vous avez besoin de passer par plusieurs vues de collection. Le moyen le plus simple est de donner à votre cellule une référence faible à votre collectionView dans cellForItemAtIndexPath ; cela fonctionne également pour votre contrôleur de vue au lieu de votre collectionView qui est probablement ce que vous voulez vraiment la référence à. La référence doit être faible puisque le collectionView conserve la cellule, sinon vous créez un cycle.

    class CustomCollectionViewCell: UICollectionViewCell {
        weak var customCollectionViewController: CustomCollectionViewController?

    }

    class CustomCollectionViewController: UICollectionViewController {
        override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: CustomCollectionViewCell.self), for: indexPath) as! CustomCollectionViewCell
            cell.customCollectionViewController = self
            return cell
        }
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X