Comment faire pour réorganiser le contrôle de UITableViewCell dans le côté gauche?
Je suis en train de faire un lecteur de nouvelles et je veux que l'utilisateur peut choisir d'afficher/masquer de nouvelles catégories (telles que l'actualité, les affaires, la technologie,le sport, etc) et de les réorganiser comme la BBC news app android.
Voir image ci-dessous:
Ma question est:
- Comment faire de réorganiser le contrôle dans le côté gauche de la cellule?
(Sa position par défaut est dans le côté droit de la cellule en mode édition) - Je haved case de contrôle personnalisé, comment le mettre dans la partie droite de la cellule?
Merci d'avance!!!
source d'informationauteur Hoang Van Ha
Vous devez vous connecter pour publier un commentaire.
Réponse [Si vous n'utilisez pas d'accessoires (détail de la divulgation, &c)]
(0) je suppose que vous avez votre place à des tables, &c.
(1) Cette solution ne fonctionne que si vos tables les cellules sont toujours déplaçable. Ajouter ceci dans votre viewDidLoad à votre Table View Controller .m fichier.
(2) De faire en sorte que vous pouvez réorganiser vos cellules, ajouter
cell.showsReorderControl = YES;
à votre tableView:cellForRowAtIndexPath:.(3) de s'Assurer que vous avez la tableView:canMoveRowAtIndexPath: et tableView:moveRowAtIndexPath:toIndexPath: méthodes.
(4) Parce que vous voulez réorganiser le contrôle sur la gauche, nous ont pour emporter le Supprimer cercle d'habitude, on y et la tableView:editingStyleForRowAtIndexPath: méthode ne.
(5) Dernière étape, où la magie se produit - ajouter la tableView:willDisplayCell:forRowAtIndexPath: la méthode, la recherche de la cellule sous-vues, le réduire à l'privée UITableViewCellReorderControl, et enfin le remplacer.
J'ai passé près de dix heures à essayer de trouver une solution pour que lorsque les accessoires et je ne pouvais pas le faire. J'ai besoin de plus d'expérience et de savoir en premier lieu. Tout simplement faire la même chose pour les réorganiser le contrôle sur la divulgation bouton ne fonctionne pas. J'espère donc que ce serait œuvres pour l'instant; et si je l'ai trouver dans le futur, je vais être sûr de mettre à jour cette.
Au lieu de la chasse pour
UITableViewCellReorderControl
qui est non-API publique et pourrait changer dans l'avenirje recommande d'utiliser unUILongPressGestureRecognizer
sur leUITableView
et de mettre en œuvre votre propre logique de réapprovisionnement.J'ai résolu le cas général (répondre à une longue appuyez sur n'importe quelle partie de la cellule) dans
HPReorderTableView
une baisse-dans le remplacement de UITableView. Il peut être facilement modifié pour répondre à des touches sur des parties spécifiques de la cellule, par exemple par la mise en œuvre degestureRecognizer:shouldReceiveTouch:
de lareorderGestureRecognizer
délégué.Maintenant, il est beaucoup plus facile de solution pour iOS 9 et plus tard
Modifier:
Comme Roland mentionné que vous devriez remarquer que "si vous alignez vos cellules des sous-vues via
leading
ettrailing
ancres au lieu deleft
etright
ce paramètre permet de basculer tout."Luc Dubert, ont cool réponse pour iOS 7, il devrait être un peu changé:
Cette solution n'a pas fonctionné pour moi dans iOS7 j'ai donc créé une version pour les deux, j'espère que cela-il utile:
Merci tout le monde ci-dessus.Voici ma solution. avons testé sur iOS7 et iOS9
Pour ceux qui utilisent Xamarin, ici c'est ma solution basée sur @luc-dubert réponse, mais en prenant soin de retirer les autres points de vue lors de la réutilisation:
Sur TableViewSource:
Sur la cellule:
J'ai trouvé beaucoup plus facile solution qui ne nécessite pas absolu positionnement manuel de quoi que ce soit, et fonctionne même avec des transitions animées à partir de/pour le mode d'édition. Devrait fonctionner pour les deux iOS6 et 7.
La définition de cette catégorie sur UIView quelque part:
Puis, dans votre UITableViewCell sous-classe, remplacer willTransitionToState comme suit:
Noter que la cellule doit être configuré pour afficher seulement les réorganiser le contrôle, sinon plus de travail doit être fait.