2013-04-18 5 views
3

Le bouton Supprimer de l'application sur laquelle je travaille émet un appel de serveur lorsqu'il est appuyé.Désactivation temporaire du bouton Supprimer dans UITableView

Cependant, pendant que nous attendons que le serveur réponde, je peux cliquer sur le bouton Supprimer plusieurs fois, et donc envoyer plusieurs requêtes de serveur.

Je suis à la recherche de solution où je veux désactiver le bouton Supprimer jusqu'à ce que je reçois une réponse du serveur. Est-ce possible? Ou y at-il une autre solution gracieuse pour cela? Ou fais-je quelque chose de mal en premier lieu.

Merci!

+0

Désactiver le bouton la première fois qu'il est tapé. Activez-le à nouveau lorsque vous êtes prêt. – rmaddy

+0

Je suppose que j'aurais dû mieux formuler cette question. Il s'agissait de savoir comment le désactiver/l'activer, pas si oui ou non. Comment accéder au bouton de suppression de UITableView? Il ne semble y avoir aucun deleteButton dans UITableView. Je n'arrive pas à le trouver dans les docs d'Apple non plus. – dagnytaggart

+0

Oh, vous parlez du bouton Supprimer dans la cellule? Laquelle? Le petit cercle rouge ou le gros rouge Bouton de confirmation Supprimer? – rmaddy

Répondre

4

Il apparaît que lorsque vous affichez le bouton de confirmation Supprimer dans une cellule de tableau, puis que l'utilisateur appuie sur le bouton, vous gérez la suppression dans la méthode commitEditingStyle déléguée habituelle. Mais il semble aussi que vous lanciez une requête du serveur et pendant qu'il s'exécute, le bouton Supprimer est toujours visible. Cela implique que vous ne supprimez pas la ligne jusqu'à ce que la demande du serveur est terminée.

Si tel est le cas, ce que vous devez faire dans votre méthode commitEditingStyle est de recharger immédiatement la ligne en cours de suppression. Cela supprimera le bouton de suppression. Ensuite, lancez la requête du serveur. Une fois la requête du serveur terminée, vous devez mettre à jour votre source de données, puis supprimer la ligne ou recharger la table ou la section si nécessaire.

Il peut être intéressant d'ajouter un petit indicateur d'activité à la cellule pour indiquer à l'utilisateur que la ligne est en cours de traitement. Vous pouvez également empêcher l'utilisateur de balayer à nouveau la ligne pendant que la requête du serveur est en cours.

+0

Juste ce que je voulais, ça marche. Merci. – dagnytaggart

0

Utilisez cette méthode quand on tape première fois:

[deleteButton setEnabled:NO]; 

permettent Ensuite, lorsque vous recevez une réponse du serveur.

+2

Mieux encore, utilisez 'deleteButton.enabled = NO'. Désactiver le bouton mettra à jour son apparence correctement. Votre approche ne changera pas l'apparence du bouton. – rmaddy

+0

Vous avez raison, je vais modifier. – iOSGuru248

+0

Ceci est pour le bouton de suppression déjà inclus dans UITableViewCell, qui n'est pas directement accessible. – thedeveloper3124

Questions connexes