2010-10-12 3 views
0

J'ai sous-classé une cellule tableview et ajouté quelques étiquettes et images à la cellule personnalisée. Lorsque je modifie le tableau et que j'appuie sur le signe "-", le bouton de suppression apparaît en haut de l'image et d'autres contenus.Le bouton Supprimer sur une cellule UITableview bloque les images de cellules personnalisées

Certaines autres applications pressent le contenu de la cellule pour accueillir le bouton de suppression.

Comment puis-je faire cela ??

Ai-je besoin d'ajouter une valeur clé observateur [cellule addObserver: auto forKeyPath: @ "showingDeleteConfirmation" Options: contexte NSKeyValueObservingOptionNew: NULL];

Répondre

4

L'auto-mémorisation est simple - pensez-y comme une page Web. Le contenu Web "coule", il prend autant d'espace que la fenêtre du navigateur lui donne. Autoresizing est le même. Il y a des "masques" qui indiquent à UIKit comment vous voulez que votre contenu s'adapte à différentes tailles d'image. Ainsi, par exemple, si vous souhaitez réduire ou agrandir votre vue du côté droit (s'il s'agit par exemple d'un contenu justifié à gauche comme une cellule de tableau), définissez le masque comme suit:

cell.autoresizingMask = UIViewAutoresizingFlexibleRightMargin; 

Autoresizing fonctionne également comme une opération OU binaire, donc si vous le voulez passer de droite (comme ci-dessus), mais aussi la croissance à partir du bas, vous devriez « OU » les deux ensemble.

cell.autoresizingMask = (UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin); 

Dans le cas où cela ne fonctionne pas pour vous (par exemple, vous voulez mettre trop sur l'écran, et la nécessité de supprimer certains éléments, etc, ou que vous souhaitez animer une certaine façon différente de celle par défaut), pensez à utiliser les appels de méthode préexistants dans UITableViewCell. De l'documentation:

- (void)willTransitionToState:(UITableViewCellStateMask)state 

Ce sera appelé juste avant la cellule change d'état (normal-> édition ou l'autre), donc si vous devez faire quelque chose de spécial pour gérer l'animation à l'état d'édition, c'est votre opportunité de le faire. L'état docs:

de UITableViewCell peut Sous-classes mettre en œuvre cette méthode pour animer des modifications supplémentaires à une cellule quand il est en train de changer état. UITableViewCell appelle cette méthode chaque fois qu'une cellule passe d'un état à un autre, par exemple , passant d'un état normal (par défaut) au mode d'édition . La cellule personnalisée peut définir et positionner les nouvelles vues avec le nouvel état. La cellule reçoit ensuite un message layoutSubviews (UIView) dans lequel il peut positionner ces nouvelles vues dans leurs emplacements finaux pour le nouvel état. Les sous-classes doivent toujours appeler super lorsque remplaçant cette méthode.

+0

ok donc cela me demande de faire le "sale" travail. Je préférerais ne pas l'utiliser, car j'ai 7 types de cellules différentes, donc je devrais faire beaucoup de personnalisation. Mais là encore, si tout le reste échoue, je vais m'y pencher. Mais ce serait bien si vous pouviez faire la lumière sur l'autoresizingMask "façon" .Il ne fonctionne pas pour moi. –

+0

J'ai ajouté plus sur autoresizing. Aussi, essayez de jeter un oeil à l'exemple de code d'Apple pour AdvancedTableCells - http://developer.apple.com/library/ios/samplecode/AdvancedTableViewCells/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009111 – makdad

+0

hey merci pour les choses autoresizing, et je suppose que je dois utiliser votre première solution, beaucoup de fouillis sur ma cellule de table. –

0

Vous devez définir le bon autoresizingMask afin que votre bouton bouge correctement lorsque le contentView change de taille.

+0

Nope.J'ai ajouté ceci dans mon implémentation personnalisée et également dans la méthode delegate de tableview. Mais dint faire une différence. –

+0

ok a obtenu que cela fonctionne, j'ai besoin de définir l'autoresizingMask des étiquettes et des images. Mais les étiquettes et les images se chevauchent maintenant. J'ai essayé toutes sortes de combinaitons. –

Questions connexes