8
votes

Lors de la présentation d'une vue Popover, comment puis-je laisser l'utilisateur sélectionner une cellule dans la vue de la collection mère?

J'ai une vue de collection et quand une cellule est sélectionnée, il présente une vue de Popover montrant plus d'informations sur cette cellule.

J'aimerais permettre à l'utilisateur de cliquer sur une autre cellule, puis de la modification de la vue de Popover pour afficher les informations de la cellule sans avoir à fermer la colleure. Si l'utilisateur devait cliquer quelque part sur la vue parent qui n'est pas une cellule, la ponphère devrait se fermer. Mais j'aimerais que l'utilisateur puisse toujours faire défiler la vue de la collection sans fermer la popover.

Comment cela peut-il être fait?


0 commentaires

3 Réponses :


5
votes

Ce que vous cherchez est le passthroughviews propriété de la popover.

Cependant, si vous ouvrez la popover à la suite de la prise d'une cellule, je ne vois pas comment faire défiler la collectionView aura un sens. N'ouvrez-vous pas la popover avec la flèche pointant vers votre cellule? Le défilement La vue rendra la cellule de présentation pour s'éloigner ...


0 commentaires

3
votes

Vous pouvez utiliser la propriété de UIViewController 'ModalInpover' pour activer les touches en dehors de la limite de Popover. Écrivez simplement la ligne indiquée ci-dessous dans votre contrôleur d'affichage que vous présentez à l'aide de Popover Controller.

self.modalInPopover = false


2 commentaires

Écrivez cette ligne sur la vue ViewDidLoad ou votre propre méthode de configuration.


PassthroughView La propriété peut être utilisée lorsque vous souhaitez activer les touches dans certaines vues spécifiques.



11
votes

Selon Apple:

Lorsqu'une popover est active, les interactions avec d'autres vues sont normalement désactivées jusqu'à ce que la ponphère soit rejetée. L'attribution d'une gamme de vues sur cette propriété permet des robinets à l'extérieur de la colleure d'être gérées par les vues correspondantes.

Ensuite, vous pouvez utiliser PASTHRUGHVIEWS de la manière suivante:

CollectionViewController xxx

Le code ci-dessus est le CollectionViewController pour gérer le uicollectionviewontroller et tous ses délégués.

CollectionViewCell xxx

la cellule personnalisée avec juste un Uilabel à l'intérieur.

POPOVERVIEWCONTROLLER xxx

et enfin le POPOVVIEWCONTROLLER Pour afficher sous forme de .popover .

Il y a Certaines observations en réponse, je voudrais souligner:

  • i Définissez une référence à la classe POPOVERVIEWCONTROLLER pour le conserver à travers le cycle de vie et transmettez les données informatiques quand il reste ouvert.

  • la ligne var t = self.popoverviewcontroller !.view C'est nécessaire car sinon le @iboutlet à l'intérieur du POPOVERVIEVOLLER était pas init jusqu'à ce qu'il soit présenté, il pourrait y avoir d'autres moyens de le faire.

  • Je présente la popover au milieu de l'écran pour gérer le robinet dans plusieurs cellules et tester le défilement aussi, vous pouvez l'afficher dans n'importe quelle position souhaitée.

  • dans les vues pour permettre quand le Popover est ouvert, je définis le self.view , mais de cette façon, vous devez le renvoyer pour vous, car il n'est jamais rejeté lorsque Vous faites des robinets dans la vue, vous pouvez mettre n'importe quelle vue que vous voulez à la place.

    Tout problème que vous avez avec la solution que je peux partager le projet sur GitHub.

    J'espère que cela vous aidera


0 commentaires