Je souhaite afficher plusieurs lignes dans la vue des cellules d'une table pour une application IOS sur laquelle je travaille. Pour être précis, j'ai une vue de table qui sera remplie avec datatables JSON qui sont renvoyées par le server, ici si le statut returnné est 0 ou 2 (Statut est l'un des objects JSON qui est returnné pour un profil) avoir à afficher un message d'erreur de 5-6 lignes.
La vue de cellule de Table est personnalisée pour afficher 2 UILabel et évidemment la taille de cette cellule est assez petite pour afficher 2 labels. J'ai trouvé une solution , mais elle ne résout pas réellement le problème. Quelqu'un peut-il suggérer une solution différente. Si possible, le lien vers un exemple sera d'une grande aide. Merci
Ce que vous searchz est appelé "cellules de taille dynamic". Il y a un tutoriel sur la façon de réaliser ceci: http://www.raywenderlich.com/73602/dynamic-table-view-cell-height-auto-layout
Il redimensionne toute la hauteur des cellules en fonction de la longueur du text comme dans cet exemple:
Si vous devez afficher ce message multi-lignes à l'un des UILabels que vous avez actuellement dans UITableViewCell, définissez la propriété "No of Lines" sur 0 (zéro) et définissez "Line Mode" sur UILineBreakModeWordWrap, Maintenant pour la hauteur de la cellule. avoir deux options c'est-à-dire avec des contraintes ou sans contraintes, ceci sera fait en utilisant la méthode cellForRowAtIndexPath.
1. if (error_message_shown) { return 200.0; else return 60.0;
if (error_message_shown) { return 200.0; else return 60.0;
Avec des contraintes
Ajoutez les contraintes haut, bas, gauche, droite, largeur et hauteur, assurez-vous d'utiliser> = pour la hauteur et calculez la hauteur du text assigné à la cellule en utilisant la méthode ci-dessous
Taille CGSize = [string sizeWithAtsortingbutes: @ {NSFontAtsortingbuteName: [UIFont systemFontOfSize: 17.0f]}];
Quand j'ai une hauteur de cellule dynamic, j'utilise quelque chose comme
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { static MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"my_cell_id"]; NSDictionary *responseItem = [self itemFor:indexPath]; return (CGFloat)[cell heightFor:responseItem]; }