246 votes

Doigt et le bouton "Plus" (comme dans l'application de Messagerie sur iOS 7)

Comment créer un bouton "plus" lorsque l'utilisateur glisser une cellule dans le tableau de la vue (comme application de messagerie dans ios 7)

J'ai été chercher cette information à la fois ici et dans le Cocoa Touch forum, mais je n'arrive pas à trouver la réponse et je suis en espérant que quelqu'un de plus intelligent que moi peut me donner une solution.

Je voudrais que lorsque l'utilisateur effectue un affichage de tableau de cellules, pour afficher plus d'un bouton d'édition (il est par défaut le bouton supprimer). Dans l'application de Messagerie pour iOS 7, vous pouvez faire glisser pour supprimer, mais il y a un bouton "PLUS" qui s'affiche.

enter image description here

126voto

Johnny Points 877

Comment mettre en Œuvre

Il ressemble à iOS 8 ouvre cette API. Notes de telles fonctionnalités sont présentes dans la Bêta 2.

Pour obtenir quelque chose de travail, mettre en œuvre l'une des deux méthodes suivantes sur votre UITableView déléguée pour obtenir l'effet désiré (voir l'essentiel pour un exemple).

- tableView:editActionsForRowAtIndexPath:
- tableView:commitEditingStyle:forRowAtIndexPath:


Problèmes Connus

La documentation dit tableView:commitEditingStyle:forRowAtIndexPath est:

"N'est pas nécessaire de modifier les actions à l'aide de UITableViewRowAction - l'action du gestionnaire sera invoqué à la place."

Cependant, le balayage ne fonctionne pas sans elle. Même si la méthode tampon est vide, il doit encore, pour l'instant. C'est le plus évident d'un bug dans la version bêta 2.


Sources

https://twitter.com/marksands/status/481642991745265664 https://gist.github.com/marksands/76558707f583dbb8f870

Réponse originale à cette question: http://stackoverflow.com/a/24540538/870028


Mise à jour:

Exemple de code avec ce travail (Swift): http://dropbox.com/s/0fvxosft2mq2v5m/DeleteRowExampleSwift.zip

121voto

MortimerGoro Points 481

J'ai créé une nouvelle bibliothèque à mettre en œuvre swippable boutons qui prend en charge une variété de transitions et extensible boutons comme iOS 8 application de messagerie.

https://github.com/MortimerGoro/MGSwipeTableCell

Cette bibliothèque est compatible avec toutes les différentes façons de créer un UITableViewCell et ses testé sur iOS 5, iOS 6, iOS 7 et iOS 8.

Voici un échantillon de quelques transitions:

La frontière de la transition:

Border transition

Clip de transition

Clip transition

De Transition 3D:

enter image description here

25voto

Jonathan. Points 15440

C'est (ridicule) une API privée.

Les deux méthodes suivantes sont privés et envoyé à la UITableView du délégué:

-(NSString *)tableView:(UITableView *)tableView titleForSwipeAccessoryButtonForRowAtIndexPath:(NSIndexPath *)indexPath;
-(void)tableView:(UITableView *)tableView swipeAccessoryButtonPushedForRowAtIndexPath:(NSIndexPath *)indexPath;

Ils sont assez explicites.

18voto

css Points 147

Ce projet Github fournit une coutume UITableViewCell qui fournit la fonctionnalité que vous recherchez et un peu plus. Avoir un coup d'oeil

https://github.com/CEWendel/SWTableViewCell

17voto

Deepukjayan Points 1141

J'espère que tu ne peux pas attendre jusqu'à apple vous donne ce que jamais vous avez besoin? Voici donc mon option.

Créer une cellule personnalisé. Deux uiviews en elle

1. upper
2. lower

En vue du bas, ajouter ce que jamais boutons dont vous avez besoin. Traiter ses actions comme n'importe quel autre IBActions. vous pouvez décider d'un temps d'animation, de style et de rien.

maintenant, ajoutez un uiswipegesture pour le point de vue supérieur et de révéler le bas de votre point de vue sur geste de balayage. J'ai fait ça avant, et c'est l'option la plus simple pour autant que je suis concerné.

Espérons que l'aide.

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