2013-07-18 2 views
0

Donc, ce problème est assez bizarre et un peu difficile à décrire. Essentiellement, j'ai un UITableView où chaque cellule a une image, et UIView couvrant une partie de l'image. Le UIView a une couleur d'arrière-plan définie à environ 30% de blanc transparent, ce qui lui donne l'apparence d'effacer l'image en dessous. Il y a aussi des étiquettes et autres. Toutes ces vues sont ajoutées à une vue de conteneur parent unique, qui est finalement ajoutée à contentView de la cellule. Tout fonctionne bien - jusqu'à ce que j'essaie de sélectionner la cellule. Pour une raison quelconque, chaque fois que la cellule est mise en surbrillance, la propriété backgroundColor sur chacune de ces vues est définie pour effacer, jusqu'à ce que la cellule ne soit pas mise en surbrillance (à quel point l'ancienne couleur renvoie).iOS: UIView backgroundColor en vue de la table

Quelqu'un peut-il expliquer pourquoi cela se produit, et plus important s'il y a moyen de le réparer? Tout au plus je pourrais créer une seule image de pixel de blanc, tourner le UIView dans un UIImageView, et mettre son image à ce pixel - mais c'est inélégant au mieux. Aucune suggestion?

+0

s'il vous plaît envoyez un peu de code de méthodes tableview didSelect et cellForRowAtIndexPath. –

+1

Cochez http://stackoverflow.com/questions/5222736/uiview-backgroundcolor-disappears-when-fileviewviewcell-is-selected pour certaines options qui peuvent aider. –

+0

Essayez [this] (http://stackoverflow.com/questions/6417590/how-to-disable-highlight-subviews-message-for-uiview-uiviewcontroller-in-ios-s), en remplaçant "_updateHighlightColorsForView" par "_setOpaque ". –

Répondre

0

Lorsque vous sélectionnez la cellule, l'implémentation de setSelected:animated: est appelée et définit la couleur d'arrière-plan de toutes les vues incluses dans cette cellule sur transparent.

Simplement, vous pouvez simplement désactiver la sélection de la cellule en définissant son selectionStyle None:

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

Ou, si vous voulez utiliser le résultat de la sélection, vous pouvez remplacer la méthode setSelected:animated: et réinitialiser le couleur d'arrière-plan de votre UIView

Questions connexes