iphone - uitableviewcell - tutorial uitableview




In UITableView funktioniert cell.detailTextLabel.text nicht... warum? (5)

In tableView:cellForRowAtIndexPath: Ich habe Folgendes:

cell.textLabel.text = @"label";
cell.detailTextLabel.text = @"detail";

Das textLabel zeigt wie erwartet, aber das detailTextLabel erscheint überhaupt nicht, obwohl es keine Diagnose gibt. Ich erwartete, dass der "Detail" -Text in der Zelle in einer zweiten Zeile unterhalb des "normalen" Textes erscheinen würde, möglicherweise mit einer kleineren Schriftgröße.

Die gleiche Frage wird hier in einem anderen Beitrag gestellt und der Benutzer "jbrennan" hat geantwortet, dass der Tabellenansichtszellenstil etwas anderes als UITableViewCellStylePlain . Es scheint jedoch, dass es nur zwei mögliche Stile gibt, UITableViewCellStylePlain und UITableViewCellStyleGrouped . Ich bekomme mit beiden das gleiche Ergebnis (das Detaillabel erscheint nicht).

Gibt es einen anderen Zellenstil, den ich in der Dokumentation nicht sehe? Hat sich UITableView in der letzten Aktualisierung detailTextLabel und detailTextLabel ist nicht mehr verfügbar? Muss ich etwas extra tun, damit es erscheint? Irgendwelche Vorschläge?

Ich benutze xcode 3.2.5 und baue für iPhone 4.2 Simulator.


Für Swift 4, obwohl die Technik die gleiche wäre, egal welche Version (oder Obj-C) -

Ich weiß, dass es etwas spät zur Party ist, aber viele Antworten machen das viel komplizierter, als es sein muss.

Angenommen, Sie verwenden ein Storyboard, müssen Sie den Tabellenansichts-Zellenstil im Storyboard nur auf "Untertitel" und dann auf

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
}

Es ist absolut nicht notwendig, Code zu verwenden, um eine Zelle zu instanziieren, einfach wie üblich wiederverwenden.


Ihre Initialisierung muss folgendermaßen geändert werden:

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
reuseIdentifier:CellIdentifier] autorelease];

Ich habe den Teil, den Sie ändern müssen, hervorgehoben und hervorgehoben.


Sie müssen den Zellentyp auf Subtitle festlegen, wenn Sie ihn zuweisen.

if (!cell) {
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:BasicCellIdentifier];
}

Wenn Sie Xcode 4.2 verwenden, legen Sie den Stil der Tabellenansichtszelle im Storyboard auf Untertitel fest. dequeueReusableCellWithIdentifier gibt eine instanziierte Zelle zurück.


cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                           reuseIdentifier:CellIdentifier];






uitableview