Ajouter plusieurs lignes de detailTextLabel dans UITableViewCell
Je suis en utilisant un UITableView
avec le style de cellule de UITableViewCellStyleValue1
.
Je veux avoir plusieurs lignes dans le detailTextLabel
, est-ce possible? Ou dois-je faire une cellule personnalisé?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir
cell.detailTextLabel.numberOfLines = 2
pour obtenir 2 lignes. Cependant, je doute UITableViewCell permettra de définir les étiquettes comme vous vous attendez dans ce cas. Vous souhaitez peut-être sous-classe UITableViewCell et remplacer-layoutSubviews
pour positionner les étiquettes de la façon dont vous le souhaitez. Vous pouvez appeler[super layoutSubviews]
et puis juste à ajuster les positions des étiquettes. Vous voudrez probablement utiliser-[NSString sizeWithFont:constrainedToSize:lineBreakMode:]
pour calculer la taille correcte pour le détail du texte de l'étiquette.Alternativement, au lieu de sous-classement UITableViewCell, vous pourriez essayer de faire les réglages dans
-tableView:willDisplayCell:forRowAtIndexPath:
, bien que, si la cellule jamais décide qu'il a besoin de re-mise en page, vos réglages seront effacés. Je vous recommande d'aller avec le sous-classement approche.Modifier: BTW, avec la sous-classe approche, tout ce que vous avez à faire est de changer
[UITableViewCell alloc]
à[MyTableViewCellSubclass alloc]
. Puisque vous n'êtes pas d'introduire de nouvelles méthodes ou des propriétés, la variable peut restent encore tapé comme un UITableViewCell et vous n'aurez pas à changer tout autre code.UINib
pour optimiser la plume de chargement). L'avantage pour peaufiner les étiquettes à l'aide de-layoutSubviews
est que vous pouvez réutiliser lestextLabel
etdetailTextLabel
propriétés, mais vous n'êtes pas requis pour l'utilisation de ceux-ci.cell.detailTextLabel
dans swift récentes versions est maintenant une option de sortecell.detailTextLabel.numberOfLines = 2
devrait êtrecell.detailTextLabel!.numberOfLines = 2
cell.detailTextLabel?.numberOfLines = 2
. Force-unwraping signifie que votre ensemble de l'application plante si vous exécutez cette ligne sur une cellule qui n'est pas un détail de l'étiquette.La detailTextLabel est un UILabel, le mot d'habillage règles s'appliquent tout comme avec une étiquette que vous créez.
http://developer.apple.com/iphone/library/documentation/uikit/reference/UILabel_Class/Reference/UILabel.html#//apple_ref/occ/instp/UILabel/lineBreakMode
EDIT: Juste la pensée, vous aurez également besoin de changer la hauteur de la cellule si le texte va au-delà d'un certain seuil de lignes. probablement 2 ou 3 est correct.
Au moins sur iOS 11 il fonctionne très bien, juste l'ajout de cette ligne.