2014-09-23 6 views
7

Così, ho creato una cella di visualizzazione tabella personalizzata con un'etichetta a sinistra e una UIImageView a destra. L'etichetta ha un cartellino di 100 e l'UIImageView un tag di 110.Cella di visualizzazione tabella personalizzata con swift in xcode 6

Il mio codice è il seguente:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("ThemeCell") as UITableViewCell 

    let theme = themes[indexPath.row] 

    var themeName = cell.viewWithTag(100) as? UILabel 
    themeName?.text = theme.themeName 

    let themeImage = cell.viewWithTag(110) as? UIImageView 
    themeImage?.image = UIImage(named: "test.png") 

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

    println("The loaded image: \(themeImage?.image)") 

    return cell; 
} 

Come è, viene visualizzata la THEMENAME ma il themeImage non appare, anche se dal println sembra che l'immagine sia caricata. Se annullo il codice in 1, l'immagine appare nella cella personalizzata, ma ovviamente non appare nella posizione corretta in quanto non viene aggiunta a UIImageView che ho creato in IB. Qualche idea su cosa potrei fare male? I tag sono tutti corretti. Grazie

+0

Ho una cella personalizzata in IB in modo da poter aggiungere un UIImageView ma non ho creato una classe MyCustomCell che estenda UITableViewCell. Non penso di aver bisogno di Ho solo bisogno di avere un UILabel e UIImageView. –

+0

Aggiungere il seguente codice per vedere se è possibile visualizzare 'UIImageView':' themeImage? .backgroundColor = UIColor.greenColor() '. –

+0

http://stackoverflow.com/questions/24170922/creating-custom-tableview-cells-in-swift/38470749#38470749 –

risposta

12

In primo luogo, è necessario appuntare le visualizzazioni con il meccanismo di layout automatico. builder Interfaccia aperta, click sinistro sull'etichetta all'interno del vostro cellulare personalizzato, quindi ad esempio effettuare le seguenti operazioni:

  1. Editor-> Pin-> Larghezza
  2. Editor-> Pin-> Altezza
  3. Editor-> Pin -> Leading Spazio per Superview
  4. Editor-> Pin-> Top Spazio per Superview

lo stesso per un'immagine all'interno del vostro cellulare personalizzato

  1. Editor-> Pin-> Larghezza
  2. Editor-> Pin-> Altezza
  3. Editor-> Pin-> lo spazio finale al Superview
  4. Editor-> Pin-> Top Spazio per Superview

Quindi creare una classe personalizzata per la cella. per esempio

MyCustomCell.swift

import Foundation 
import UIKit 

class MyCustomCell: UITableViewCell { 
    @IBOutlet weak var myLabel: UILabel! 
    @IBOutlet weak var myImageView: UIImageView! 
} 

Quindi impostare classe personalizzata per il vostro cellulare e creare connessioni da elementi.

E ora in tableViewController è possibile impostare i valori per gli elementi senza modifiche:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    var cell: MyCustomCell = tableView.dequeueReusableCellWithIdentifier("ThemeCell") as MyCustomCell 

    let theme = themes[indexPath.row] 

    cell.myLabel.text = theme.themeName 
    cell.myImageView.image = UIImage(named: "test.png") 

    println("The loaded image: \(cell.myImageView.image)") 

    return cell; 
} 
3

Ok, quindi la colpa non era nel datto a tutti, ma nel fatto che il layout automatico non è stata impostata correttamente e l'immagine appariva al di fuori della tableview ...