2014-09-23 19 views
7

Böylece, solda bir etiket ve sağda bir UIImageView bulunan özel bir tablo görünümü hücresi oluşturdum.Özel tabloyu görüntülemek için xcode 6 hücresine göz atın.

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

, THEMENAME görüntülenir olduğunu ancak themeImage görünmüyor gibi, gelen rağmen: etiket 110.

Kodum bir etiket şudur 100 ve UIImageView bir etiket var println göründüğü gibi görünüyor. Kodun 1'inde kusurlu olursam, görüntü özel hücrede görünür, ancak elbette IB'de oluşturduğum UIImageView'a eklenmediği için uygun yerde görünmez. Herhangi bir fikrim yanlış ne yapabilirim? Etiketler doğru. Teşekkürler

+0

UIImageView ekleyebilmem için IB'de özel bir hücrem var ancak UITableViewCell'i genişleten bir MyCustomCell sınıfı oluşturmadım. İhtiyacım olduğunu düşünmüyorum. Sadece bir UILabel ve UIImageView'a sahip olmalıyım. –

+0

"UIImageView" öğesinin görüntülenip görüntülenemeyeceğini görmek için şu kodu ekleyin: "themeImage? .backgroundColor = UIColor.greenColor()". –

+0

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

cevap

12

İlk olarak, görünümlerinizi otomatik düzen mekanizmasıyla sabitlemeniz gerekir. Sonra örneğin aşağıdakileri yapın Açık arabirim oluşturucu, özel hücre içinde etikette sol tıklama:

  1. Editör-> Pin> Genişlik
  2. Editör-> Pin> Yükseklik
  3. Editör-> Pim -> Lider Uzay
  4. Editör-> Pin> En Uzay özel hücre içinde

görüntü için aynı Superview için Superview için

  1. Editör-> Pin> Genişlik
  2. Editör-> Pin> Yükseklik
  3. Editör-> Pin> Firar Uzay Superview için
  4. Editör-> Pin> En Uzay Superview için

Ardından, hücreniz için özel bir sınıf oluşturun. hücren için örnek

MyCustomCell.swift

import Foundation 
import UIKit 

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

Sonra ayarlanan özel sınıf için ve elementlerden bağlantılarını oluşturun.

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, bu nedenle arıza AutoLayout doğru ayarlanmış olmadığını hiç UITable içinde ama aslında değildi ve:

Ve şimdi tableViewController size etiketleri olmadan öğelere değerlerini ayarlayabilirsiniz görüntü, tablo görünümünün dışında çıktı ...