2014-09-23 38 views
7

So erstellte ich eine benutzerdefinierte Tabellenansicht Zelle mit einem Label auf der linken und einem UIImageView auf der rechten Seite. Das Etikett weist ein Etikett 100 und der UIImageView ein Tag von 110Benutzerdefinierte Tabellenansicht Zelle mit Swift in Xcode 6

Mein Code ist folgende:

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

Wie ist die THEME angezeigt, aber die themeImage nicht erscheint, obwohl aus println scheint das Bild geladen zu sein. Wenn ich den Code in 1 auskommentiere, erscheint das Bild in der benutzerdefinierten Zelle, erscheint aber natürlich nicht an der richtigen Stelle, da es nicht zu der UIImageView hinzugefügt wird, die ich in IB erstellt habe. Irgendwelche Ideen, was ich falsch machen könnte? Die Tags sind alle korrekt. Danke

+0

Ich habe eine benutzerdefinierte Zelle in IB, um eine UIImageView hinzuzufügen, aber ich habe keine MyCustomCell-Klasse erstellt, die UITableViewCell erweitert. Ich glaube nicht, dass ich es muss. Ich brauche nur ein UILabel und UIImageView. –

+0

Fügen Sie den folgenden Code hinzu, um zu sehen, ob Ihr 'UIImageView' angezeigt werden kann:' themeImage? .backgroundColor = UIColor.greenColor() '. –

+0

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

Antwort

12

Zuerst müssen Sie Ihre Ansichten mit Auto-Layout-Mechanismus feststecken. Öffnen Sie Interface Builder, klicken Sie links auf dem Etikett in Ihrer benutzerdefinierten Zelle, dann beispielsweise wie folgt vor:

  1. Editor-> Pin-> Breite
  2. Editor-> Pin-> Höhe
  3. Editor-> Pin -> Führende Space Super
  4. Editor-> Pin-> Top Raum

das gleiche in Ihrer benutzerdefinierten Zelle für Bild Super

  1. Editor-> Pin-> Breite
  2. Editor-> Pin-> Höhe
  3. Editor-> Pin-> nachstehendes Leerzeichen
  4. Editor-> Pin-> Top Space Super zu Super

Erstellen Sie dann eine benutzerdefinierte Klasse für Ihre Zelle. zum Beispiel

MyCustomCell.swift

import Foundation 
import UIKit 

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

Dann legen Sie benutzerdefinierte Klasse für Ihre Zelle und Verbindungen von Elementen erstellen.

Und jetzt in Tableviewcontroller können Sie die Werte auf Ihre Elemente ohne Tags gesetzt:

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, also der Fehler war nicht in der uitable überhaupt, sondern in der Tatsache, dass das Autolayout nicht korrekt eingestellt wurde und Das Bild erschien außerhalb der Tabellenansicht ...

Verwandte Themen