2011-08-24 25 views
19

Ho un UITableView che ottiene informazioni da un server e pubblica i dati in una vista tabella. All'interno di ogni cella sono le informazioni dal server.Aggiungi immagine alla cella TableView

Ai fini di questo esempio, diciamo che le informazioni che otteniamo da server sono numeri: 1, 2, 3, 4.

Quello che voglio fare è aggiungere un'immagine (a livello di codice, perché ci sono se dichiarazioni coinvolte, ecc.) sul lato sinistro della cella e il testo (1, 2, ecc.) proprio accanto ad esso.

sostanza, voglio ogni cella di simile a questa:

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

Chiedo scusa per la mia illustrazione greggio. :)

risposta

19

qui si va:

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

Swift:

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

Tale questione dovrebbe essere risolto nel mio modifica della risposta il 24 settembre 2015. –

3

Gli oggetti UITableViewCell hanno una proprietà imageView; puoi semplicemente impostare l'immagine di questa immagine e visualizzerà automaticamente l'immagine nel posto giusto con il titolo accanto ad essa.

8

È possibile aggiungere sia l'immagine e il testo alla UITableViewCell nella sottoclasse UITableViewController in questo modo:

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

ci sono alcune proprietà "built-in" per UITableViewCell che si può trarre vantaggio, come ad come imageView, textLabel e detailTextLabel. Per ulteriori informazioni, consulta lo 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 versione Swift 2.0 della prima risposta è:

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