Empêcher le retrait de UITableViewCell (contentView) lors de l'édition
Est-il possible de garder le contentView.frame
toujours le même, indépendamment de tableView.editing
? J'ai déjà essayé de remplacer layoutSubviews
et willTransitionToState
mais ces options essoufflées trop. Je ne peux pas semblent être en mesure de modifier la largeur de la contentView. Ou peut-être que mon approche ist tout simplement impossible ...
Peut-être il ya une autre façon de résoudre ce problème.
Le comportement que je veux réaliser est le suivant: je veux la norme textLabel
d'un UITableViewCell
être toujours en retrait et de ne pas changer de position lors de la tableView entre dans le mode d'édition. Le problème, je vais probablement faire face est que le comportement de la detailTextLabel
devront être corrigés (par exemple, la troncature de texte si textLabel
contenu est trop long). La raison pour laquelle je ne veux pas mettre en place mes propres UILabel
est parce que la coutume des sous-vues va diminuer les performances de défilement par une quantité importante.
J'espère que tous ceux qui ont déjà mis en place quelque chose comme cela dans leur UITableView
et pourrait m'indiquer une solution à ce pénible problème. Merci à l'avance!
EDIT: je fais face à un UITableView
dans la plaine et ne sont pas regroupés style.
- Pour moi, il y avait un bug avec cette. Chaque fois que j'allais dans le mode d'édition, l'indentation saute partout - très étrange, très laid. Dans la PLUME, j'ai dû changer la cellule "style" à quelque chose d'autre, et retour à la base". L'Indentation est de retour à la normale maintenant.
Vous devez vous connecter pour publier un commentaire.
Heureusement, iOS est parfaitement équipé pour garder quelle que soit la valeur de la constante.
Ce (laid) le morceau de code continuera de l'image fixe à n'importe quelle valeur a
origin.x==0
. Ceci est facilement adapté à vos besoins.Cela permettra seulement l'image pour changer les valeurs avec une
origin.x==0
. Supprimer laNSLog()
lignes de Release.J'ai testé ce pendant quelques minutes et que vous n'avez pas vu tous les effets secondaires.
Utiliser le
UITableViewDelegate
méthode:Cela fonctionne pour les deux regroupées et non regroupées
UITableView
types. Toutefois, si vous avez un groupe de tableview, vous pouvez utiliser cette propriété sur la cellule:This property has an effect only on table views created in the grouped style (UITableViewStyleGrouped); it has no effect on UITableViewStylePlain table views.
et ma table de la vue est en effet de style ordinaire...shouldIndentWhileEditing
et non pas la méthode du déléguéshouldIndentWhileEditingRowAtIndexPath
.shouldIndentWhileEditingRowAtIndexPath
n'est pas appelé pour une raison quelconque. Ma vue de la table a un couple de ligne personnalisée actions au lieu d'utiliser la valeur par défaut, pourrait-il en être la raison?Basé sur Usman.3D
Sur la table de montage séquentiel, une propriété
indent While Editing
estchecked
par défaut. Il peut être désactivée manuellement. Il est égal àcell.shouldIndentWhileEditing = NO
.Vous aurez à remplacer layoutSubviews pour ce faire. Il s'applique au niveau de la coutume de l'indentation de sorte qu'il n'est pour aucun.
Jetez un oeil à Comment puis-je modifier le montant de retrait sur mon custom UITableViewCell lors de l'édition?. J'ai donné un exemple, comment modifier le niveau d'indentation. Même si cela n'a pas fonctionné à 100% pour l'OP, il a travaillé dans mon exemple d'application. Je pense que cela va vous diriger dans la bonne direction.
contentView
est bien efficace. La raison pour laquelle je n'ai pas un avis c'est quetextLabel
etdetailTextLabel
ne comptent pas uniquement surcontentView.frame
.J'ai eu le même problème avec mon style ordinaire de la table, même avec
shouldIndentWhileEditingRowAtIndexPath
retour NONDe mon côté, je rencontre le problème, parce que ma première ligne ne doit pas être supprimé et le reste de l'affichage de la table de cellules.
J'ai ajouté cette deuxième méthode et cela a fonctionné:
Espère que cela aide
Avez-vous regardé
UITableViewCell
'sshouldIndentWhileEditing
etindentationLevel
propriétés? Ceux-ci peuvent trier.Un peu de retard,
mais j'ai résolu le problème en désactivant le d'un redimensionnement automatique de Masque pour tous les points de vue dans mon TableViewCell:
Éteindre ou d'un redimensionnement automatique de la largeur et/ou hauteur directement dans Interface Builder.
Viens de tomber sur ce que je faisais des recherches sur le même problème.
Une solution très simple consiste à définir le niveau d'indentation d'un nombre négatif - il est un entier signé, après tout.
Un [cellule setIndentationLevel:-3] a fonctionné parfaitement pour moi, compte tenu d'une indentation par défaut de la largeur de 10, pour déplacer le dos de l'étiquette à gauche dans un simple tableau.
Vous pouvez toujours obtenir un tableviewcell avec un indexpath. L'aide que tableviewcell reuseidentifier, Vous pouvez éviter la tableview contenu de la cellule la taille de redimensionnement ou pas. J'ai eu une exigence de mettre en place le même genre de fonctionnalité pour éviter le redimensionnement de séparer les cellules. PFB le code.