2009-06-01 7 views
6

Comment puis-je implémenter tweetie comme menu glisser? J'en ai terminé avec le développement d'un controleur de table avec une cellule personnalisée. La cellule personnalisée implémente touchesbegan et touchesMoved. Il signale également les gestes de balayage via un sélecteur au contrôle tableview parent.Tweetie comme le menu glisser

Maintenant, comment dois-je cacher la cellule "Swiped" et la remplacer par une "vue de menu de balayage" et comment devrais-je obtenir les actions des boutons présents sur le swipeview?

+0

Jetez un oeil à https://github.com/thermogl/TISwipeableTableView Il a besoin d'un peu de polissage, mais il fonctionne et peut être un début. – myell0w

+0

Attention, TISwipeableTableView perturbe les événements UITableView "normaux" ... en les simulant dans la classe. Donc, vous obtenez tout type de comportement bizarre non par défaut ... je vais essayer de le mettre en œuvre, mais c'était un briseur d'affaire. (Ce n'était pas trop dur de le réécrire) – steipete

Répondre

12

Chaque cellule de vue de table a un contenu qui englobe toute la zone de la cellule. Ajoutez votre vue de menu contextuel en tant que vue de conteneur unique avec un arrière-plan opaque à la vue de contenu afin qu'elle soit au-dessus de tout le reste. Positionnez-le de sorte qu'il soit aligné à gauche (x = 0), définissez la largeur sur 0 et définissez-le comme caché. Ce seul conteneur peut inclure n'importe quelle autre sous-vue (boutons, etc.) et vous pouvez définir la vue de la cellule elle-même comme la cible des événements de bouton (puis l'envoyer vers la vue parent avec les informations d'index de cellule). Lorsque le moment est venu de l'afficher, réglez-le sur non masqué, puis utilisez l'animation UIView pour faire passer la largeur du conteneur de 0 à la largeur totale de la table. Réglez la durée assez bas (c'est-à-dire 0,2 seconde), donc c'est zippy. Lorsque vous exécutez l'animation, le menu contextuel s'affiche sur tout le reste dans la vue du contenu de la cellule. Pour le faire disparaître, inversez-le (réglez la largeur sur 0 dans un bloc UIView BeginAnimation). Vous pouvez également définir un gestionnaire de complétion d'animation à la fin et y faire un peu de ménage (définir la vue du conteneur sur hidden, release memory, etc.).

+0

Merci ... Havent 'encore essayé ... mais semble très prometteur ... – Mugunth