Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
UITableViewCell: Bilder in Tabellenzellen

Bitmap-Grafiken lassen sich ebenfalls mühelos innerhalb einer UITableViewCell anzeigen, und ihre Zuweisung geschieht über die cell.imageView.image-Eigenschaft. Obwohl das imageView-Objekt vom Typ UIImageView immer vorhanden ist, nimmt es keinen Platz in der Zelle ein, solange keine Grafik bestimmt wurde. Möchte man aber Bilder in der Zelle darstellen, werden diese immer auf der rechten Seite angezeigt, und am besten eignen sich Grafiken im .PNG Format, da sie auch Transparenz im Bild erlauben. Die Dateien, am besten in den Abmessungen 48x48 Pixel, können direkt aus dem Finder in den Projekt Navigator gezogen werden. Der alternative Weg führt über das XcodeMenü und die Punkte File und Add Files to .... Im Projekt Navigator eine neue Gruppe für die Bilder anzulegen ist zu empfehlen, um innerhalb des Projektes den Überblick zu behalten.
stacks_image_55059DA1-6109-4DF9-9718-B4C8CA3BA8CC
Sind die Grafik-Dateien im Projekt eingefügt, kann im Programmcode mit der Methode imageNamed der Klasse UIImage leicht auf sie zugegriffen werden. Dafür genügt es, den Dateinamen als Zeichenkette anzugeben. Die Zuweisung der image-Eigenschaft geschieht wieder in der tableView:cellForRowAtIndexPath-Methode. Auch dort können durch geschickte Programmierung verschiedene Bilder angesprochen werden. Wird eine spezielle Zuordnung von Land und Grafik benötigt, könnte der richtige Dateiname auch als neue Eigenschaft in der Klasse Country hinterlegt werden.
- (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
   
    UITableViewCell *cell =
    [tableView
     dequeueReusableCellWithIdentifier:CellIdentifier];
  
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc]
        initWithStyle:UITableViewCellStyleDefault
        reuseIdentifier:CellIdentifier] autorelease];
    }

    Country *aCounty =
    [countryArray objectAtIndex:indexPath.row];
    cell.textLabel.text = aCounty.countryName;
    cell.detailTextLabel.text = aCounty.capital;
   
    if ((indexPath.row % 2) == 0)
    {
        cell.imageView.image = [UIImage
          imageNamed:@"icontype2.png"];  
    }
    else
    {
        cell.imageView.image = [UIImage
          imageNamed:@"icontype1.png"];  
    }
    return cell;
}

stacks_image_5A111360-9E38-4D28-8A44-9650DA180C04