2011-08-24 23 views
19

Tengo un UITableView que obtiene información de un servidor y publica los datos en una vista de tabla. Dentro de cada celda está la información del servidor.Agregar imagen mediante programación a la celda TableView

A los efectos de este ejemplo, supongamos que la información que obtenemos desde el servidor son los números: 1, 2, 3, 4.

Lo que quiero hacer es añadir una imagen (mediante programación porque hay si declaraciones involucradas, etc.) en el lado izquierdo de la celda, y el texto (1, 2, etc.) al lado de la celda.

Básicamente, quiero que cada célula para tener este aspecto:

_____________________________________ 
| (IMAGE) (TEXT)      | --CELL 0 
-------------------------------------- 
_____________________________________ 
| (IMAGE) 2       | --CELL 1 
-------------------------------------- 

Por favor, disculpe mi ejemplo de crudo. :)

Respuesta

19

Aquí van:

cell.imageView.image = [UIImage imageNamed:@"image.png"]; 

Swift:

cell.imageView?.image = UIImage(named: "image.png") 
+0

Esta cuestión debe fijarse en mi edición de la respuesta el 24 de septiembre de 2015. –

3

Los objetos UITableViewCell tienen una propiedad imageView; solo puede establecer la imagen de esta imagen y se mostrará automáticamente la imagen en el lugar correcto con el título al lado.

8

Se pueden añadir tanto la imagen como el texto a la UITableViewCell en la subclase UITableViewController así:

- (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]; 
    } 

    [[cell imageView] setImage:anImage]; 
    [[cell textLabel] setText:[NSString stringWithFormat:@"%d",[indexPath row]]; 

    return cell; 
} 

hay algunas propiedades "built-in" a UITableViewCell que se puede aprovechar, tales como imageView, textLabel y detailTextLabel. Para obtener más información, consulte Table View Programming Guide.

0
// create a rectangle box for image view 

UIImageView *iconImage = [[UIImageView alloc] init]; 
iconImage.frame = CGRectMake(12,4,53.5,53.5); 

// Create a label for cells 
UILabel *cellName = [[UILabel alloc] initWithFrame:CGRectMake(75,18,200,20)]; 
cellName.font = [self fontForBodyTextStyle]; 

NSString *cellNameStr = [NSString stringWithFormat:@"%@",self.tableCellNames[indexPath.row]]; 

// Select path row tab actions 
switch (indexPath.row) { 
    case 0: 

     cellName.text = cellNameStr; 
     iconImage.image = [UIImage imageNamed:@"condition.png"]; 
     [cell.contentView addSubview:iconImage]; 
     [cell.contentView addSubview:cellName]; 

     break; 

    case 1: 
     cellName.text = cellNameStr; 
     iconImage.image = [UIImage imageNamed:@"videos.png"]; 
     [cell.contentView addSubview:iconImage]; 
     [cell.contentView addSubview:cellName]; 
     break; 

    case 2: 
     cellName.text = cellNameStr; 
     iconImage.image = [UIImage imageNamed:@"provider.png"]; 
     [cell.contentView addSubview:iconImage]; 
     [cell.contentView addSubview:cellName]; 
     break; 

    case 3: 
     cellName.text = cellNameStr; 
     iconImage.image = [UIImage imageNamed:@"info.png"]; 
     [cell.contentView addSubview:iconImage]; 
     [cell.contentView addSubview:cellName]; 
     break; 

    default: 
     NSAssert(NO, @"Unhandled value in cellForRowAtIndexPath"); 
     break; 
} 
5

La versión Swift 2.0 de la primera respuesta es:

cell.imageView?.image = UIImage(named: "image.png") 
Cuestiones relacionadas