Dans tableView:cellForRowAtIndexPath:
j'ai les éléments suivants:
cell.textLabel.text = @"label";
cell.detailTextLabel.text = @"detail";
La textLabel
s'affiche comme prévu, mais la detailTextLabel
n'apparaît pas du tout, bien qu'il n'y ait pas de diagnostic. Ce à quoi je m'attendais, c’est que le texte "en détail" apparaisse dans la cellule de la deuxième ligne, en dessous du texte "normal", éventuellement avec une taille de police inférieure.
La même question est posée dans une autre publication ici et l'utilisateur "jbrennan" répond que le style de la cellule tableview doit être autre chose que UITableViewCellStylePlain
. Cependant, il semble qu'il n'y ait que deux styles possibles, UITableViewCellStylePlain
et UITableViewCellStyleGrouped
. J'obtiens le même résultat avec l'un ou l'autre (l'étiquette de détail n'apparaît pas).
Existe-t-il un autre style de cellule que je ne vois pas dans la documentation? Est-ce que UITableView
a changé dans la dernière mise à jour et detailTextLabel
n'est plus disponible? Dois-je faire quelque chose de plus pour le faire apparaître? Aucune suggestion?
J'utilise xcode 3.2.5 et je construis pour iPhone 4.2 Simulator.
Votre initialisation doit être changée en ceci:
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier] autorelease];
J'ai souligné et mis en gras la partie que vous devez changer.
Vous devez définir le type de cellule sur Sous-titre lorsque vous l'allouez.
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:BasicCellIdentifier];
}
Lorsque vous utilisez Xcode 4.2, définissez le style de cellule d'affichage de table sur Sous-titre dans Storyboard. dequeueReusableCellWithIdentifier
retournera une cellule instanciée.
Définir le style de la cellule d'affichage de la table sur Sous-titre dans le Storyboard
et écrivez ce code pour configurer votre cellule
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:BasicCellIdentifier] autorelease];
}
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier];
Swift 3:
Si vous créez une cellule en remplaçant la fonction "cellForRowAt indexPath":
let tableContent = ["1", "2", "3", "4", "5"]
let tableDetailContent = ["a", "b", "c", "d", ""]
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "yourCellIdentifier")
cell.textLabel?.text = tableContent[indexPath.row]
cell.detailTextLabel?.text = tableDetailContent[indexPath.row]
return cell
}
Cette partie de code ci-dessus vous permet de définir votre detailTextLabel .. Vous pouvez définir ce que vous voulez sur le storyboard pour le style de cellule d'affichage du tableau (Personnalisé, De base, Détail de droite, Détail de gauche, Sous-titre), cette ligne le remplacera:
style: UITableViewCellStyle.subtitle
Pour Swift 4, bien que la technique soit la même quelle que soit la version (ou Obj-C) -
Je sais que c'est un peu tard pour le parti, mais beaucoup de réponses compliquent les choses beaucoup plus que nécessaire.
En supposant que vous utilisiez un story-board, tout ce que vous avez à faire est de définir le style de la cellule d'affichage de la table dans le story-board sur 'Sous-titre', puis simplement -
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myIdentifier", for: indexPath)
cell.textLabel?.text = "Title"
cell.detailTextLabel?.text = "Subtitle..."
return cell
}
Il n'est absolument pas nécessaire d'utiliser du code pour instancier une cellule, il suffit de le réutiliser comme d'habitude.
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier: CellIdentifier];