Schritt für Schritt - Entwickeln für OS X und iOS
Schritt für Schritt - Entwickeln für OS X und iOS
UITableViewCell: Untertitel und Farben

Die einfachste Erweiterung ist die Ausgabe einer zusätzlichen Beschreibung, und sie lässt sich im Programmcode mühelos durch die Eigenschaft cell.detailTextLabel.text setzten. Wie zuvor beim cell.textLabel.text kann eine Zeichenkette zugewiesen werden, die in der Zelle dann als Text, für gewöhnlich in grauer Schrift und etwas kleinerer Schriftgröße, angezeigt wird. Nicht verschweigen sollte man, dass dabei die Schrift des textLabel mitunter etwas kleiner wird.
Allerdings funktioniert diese Änderung nicht ohne weiteres denn damit die UITableViewCell solch eine Art der Darstellung überhaupt erlaubt, muss bei der Objekt-Initialisierung in der initWithStyle-Methode der Style geändert werden. Aus UITableViewCellStyleDefault wird UITableViewCellStyleSubtitle, wobei mit dem Subtitle, dem Untertitel, zweifellos die Eigenschaft detailTextLabel gemeint ist.


Die einfachste Erweiterung ist die Ausgabe einer zusätzlichen Beschreibung, und sie lässt sich im Programmcode mühelos durch die Eigenschaft cell.detailTextLabel.text setzten. Wie zuvor beim cell.textLabel.text kann eine Zeichenkette zugewiesen werden, die in der Zelle dann als Text, für gewöhnlich in grauer Schrift und etwas kleinerer Schriftgröße, angezeigt wird. Nicht verschweigen sollte man, dass dabei die Schrift des textLabel mitunter etwas kleiner wird.
Allerdings funktioniert diese Änderung nicht ohne weiteres denn damit die UITableViewCell solch eine Art der Darstellung überhaupt erlaubt, muss bei der Objekt-Initialisierung in der initWithStyle-Methode der Style geändert werden. Aus UITableViewCellStyleDefault wird UITableViewCellStyleSubtitle, wobei mit dem Subtitle, dem Untertitel, zweifellos die Eigenschaft detailTextLabel gemeint ist.
stacks_image_47ECCE91-F4FD-4728-839D-2D4BD41AA39E
Möchte man die Tabellenzelle oder eines ihrer Unterobjekte färben, ist etwas mehr Aufwand erforderlich. Zwar hat man in tableView:cell ForRowAtIndexPath: Zugriff auf die nötigen Eigenschaften, Farben in dieser Methode zu setzten hat aber keinerlei Auswirkungen auf die Darstellung.
Anpassungen der Farben, Textfarbe sowie Hintergrundfarbe, sind eine Aufgabe für die tableView:willDisplayCell-Methode, welcher beim Aufruf immer genau eine Zelle als Parameter übergeben wird. Da diese Methode auch Teil des UITableViewDelegate-Protokolls ist, muss sie ebenfalls nicht im Header des Tabellen-Controllers deklariert werden.
- (void)tableView:(UITableView *)tableView willDisplayCell:
     (UITableViewCell *)cell forRowAtIndexPath:
     (NSIndexPath*)indexPath
{
    cell.textLabel.textColor = [UIColor blueColor];
    cell.detailTextLabel.textColor = [UIColor redColor];
    UIColor *background =
    [[UIColor alloc] initWithRed:0.8 green:1.0 blue:1.0
     alpha:1];
                   
    cell.backgroundColor = background;
    [background release];
}
stacks_image_D26CFE9D-CABE-43EB-A2FB-3F99DD98425B
Da sich über den Parameter indexPath auch die zugehörige Zeile ermitteln lässt können mit geringem Aufwand und dem Modulo-Operator auch wechselnde Zellenhintergründe realisiert werden.
- (void)tableView:(UITableView *)tableView
     willDisplayCell:(UITableViewCell *)cell 
     forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.textLabel.textColor = [UIColor blueColor];
    cell.detailTextLabel.textColor = [UIColor redColor];
   
    UIColor *background;
    if ((indexPath.row % 2) == 0)
    {
        background =
        [[UIColor alloc] initWithRed:0.8 green:1.0 blue:1.0
          alpha:1];
    }
    else
    {
        background =
        [[UIColor alloc] initWithRed:1.0 green:0.8 blue:0.8
          alpha:1];
    }
                       
    cell.backgroundColor = background;
    [background release];
}
stacks_image_D3DD16D3-5B6C-47A4-B748-14F1A0D9C140