web-dev-qa-db-fra.com

iOS: cellules UITableView à plusieurs lignes?

Quelle est la meilleure façon d'avoir des cellules UITableView avec plusieurs lignes? Disons 5 .. ou 6?

Au lieu de textLabel et de la detailTextLabel? Devrais-je créer un style personnalisé? ou une vue personnalisée?

Tout tutoriel/exemple est bien accepté.

merci

41
aneuryzm

Vous pouvez utiliser les vues UILabel existantes dans UITableViewCell. Le secret est de faire ce qui suit:

cell.textLabel.numberOfLines = 0;
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;

Par défaut, UILabel n'autorise qu'une ligne de texte. Définir numberOfLines sur 0 supprime fondamentalement toute limitation du nombre de lignes affichées. Cela vous permet d'avoir plusieurs lignes de texte.

Le paramètre de lineBreakMode sur Retour automatique à la ligne le dit à Word pour insérer de longues lignes de texte sur la ligne suivante de l'étiquette. Si vous ne le souhaitez pas, vous pouvez ignorer cette ligne.

Vous devrez peut-être également ajuster la hauteur de la cellule de la vue tableau afin de libérer de l'espace pour les multiples lignes de texte que vous ajoutez.

Pour iOS 6.0 et versions ultérieures, utilisez NSLineBreakByWordWrapping au lieu de UILineBreakModeWordWrap, qui est obsolète. 

115
rekle

Pour Swift 3.x:

func allowMultipleLines(tableViewCell: UITableViewCell) {
    tableViewCell.textLabel?.numberOfLines = 0
    tableViewCell.textLabel?.lineBreakMode = .byWordWrapping
}
24
Gobe
cell.textLabel.numberOfLines = 0;

ensemble avec

tableView.rowHeight = UITableViewAutomaticDimension

Est-ce que fonctionnemais seulementsi le nombre de lignes est limité (2-3 lignes).

Ce que je devais faire aussi était d'intégrer les champs de cellules dans une variable StackView. Cela a fait toute la différence. Maintenant, je peux afficher autant de lignes que je veux.

0
Allister Smith

Il y a une méthode pour accomplir ceci juste en utilisant le storyboard. Commencez par sélectionner la cellule et accédez à la section des attributs du panneau de droite. La première option devrait être "Style". Changer ceci de la coutume à la base. Maintenant, dans votre cellule, vous devriez voir le texte qui dit "Titre". Double-cliquez dessus et dans le panneau de droite, vous devriez pouvoir définir le nombre de lignes.

0
MikeWazowski

J'ai trouvé cela a fonctionné pour moi sur Xcode Version 8.0 (8A218a) 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)    UITableViewCell {
        let cell = UITableViewCell()
       //MARK: Word wrapping in cell
        cell.textLabel?.text = self.choices[(indexPath as NSIndexPath).row]
        cell.textLabel?.numberOfLines=0 // line wrap
        cell.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping

        return cell
    }
0
Phil Cumpston