2016-07-31 49 views
2
zu einer xib Datei gebunden ist

Ich habe eine benutzerdefinierte Zelle NormalImageCell genannt, die von UITableViewCell erbt und ist mit einem xib gebunden. Nehmen wir an, ich wollte eine neue Zelle mit dem Namen LargeImageCell erstellen, die von NormalImageCell erbt, ohne eine neue XIB zu erstellen. Ich kann dies leicht programmgesteuert ohne Interface Builder, aber aufgrund NormalImageCell gebunden an eine Xib und die Zelle in der Xib kann nur mit einer benutzerdefinierten Klasse und einem Wiederverwendung Identifier verbunden werden, wie wäre ich in der Lage, es für LargeImageCell wieder zu verwenden?Swift - Wie aus einer benutzerdefinierten Zelle erben, die

Dies funktioniert ohne Interface Builder.

class LargeImageCell: NormalImageCell {...}

tableView.registerClass(NormalImageCell.self, forCellWithReuseIdentifier: NormalImageCell.id()) 
tableView.registerClass(LargeImageCell.self, forCellWithReuseIdentifier: LargeImageCell.id()) 

Dieser stürzt mit Interface Builder:

tableView.registerNib(NormalImageCell.nib(), forCellWithReuseIdentifier: NormalImageCell.id()) 
tableView.registerNib(LargeImageCell.nib(), forCellWithReuseIdentifier: LargeImageCell.id()) 

BTW, ich bin die Spitze und id Methoden wie diese zu erklären:

class NormalImageCell: UITableViewCell { 

    class func id() -> String { 
     return String(self) 
    } 

    class func nib() -> UINib { 
     return UINib(nibName: String(self), bundle: nil) 
    } 
} 

class LargeImageCell: NormalmageCell { 
    ... 
} 
+0

Wie deklarieren Sie Ihre 'nib' Methoden? – OOPer

+0

Klasse Func nib() -> UINib {return UINib (nibName: String (self), Bündel: nil)} –

+0

Haben Sie beide Nib-Dateien in Ihrem Projekt: NormalImageCell.xib und LargeImageCell.xib? – OOPer

Antwort

0

Sie sollten das abrufen Feder aus dem Hauptbündel wie:

class func nib() -> UINib {  

    return UINib(nibName: String(self), bundle: NSBundle.mainBundle()) 
}