Ich versuche, Koloda Karte swiping Stil zu implementieren. Ich habe eine .xib-Datei mit der Struktur Bild 1 & 2. Verbindung von IBOutlet zu XIB Datei nicht möglich
erstellt. Wie Sie in Bild 1 sehen können, habe ich den Besitzer der Datei als benutzerdefinierte Klasse XIB-Dateien festgelegt.
In Bild 2, ich habe die Klasse leer gelassen (nicht sicher, ob dies richtig ist)
Meine NIB-Klasse nach dem unten angegebenen Code.
import UIKit
import Koloda
class CardView: KolodaView {
var view: UIView!
var nibName: String = "CardView"
var uid: String!
@IBOutlet weak var profileImage: UIImageView!
@IBOutlet weak var nameLabel: UILabel!
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setUp()
}
override init(frame: CGRect) {
super.init(frame: frame)
setUp()
}
func setUp() {
view = loadViewFromNib()
view.frame = bounds
view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.isUserInteractionEnabled = true
addSubview(view)
}
func loadViewFromNib() -> UIView {
let bundle = Bundle(for: CardView.self)
let nib = UINib(nibName: String(describing: CardView.self), bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
return view
}
}
In meinem Controller habe ich die Ansicht für Index wie folgt;
func koloda(_ koloda: KolodaView, viewForCardAt index: Int) -> UIView {
_ = userResults[Int(index)]
let bundle = Bundle(for: CardView.self)
let nib = UINib(nibName: String(describing: CardView.self), bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
return view
}
Ich kann meine IBOutlets nicht einfügen und sie in meinem UIViewController verweisen. Wie werde ich bekommen GeoFire & FirDatabase Info und bevölkern die Ansichten. Ich verstehe, dass dies etwas mit dem Besitzer der Datei zu tun hat. Ich bin mir nur nicht sicher, wie ich die IBOutlets für die Unteransicht anstelle der benutzerdefinierten Klasse festlegen soll.
Jede Hilfe wird geschätzt.
Warum würden Sie 'koloda' Methode liefert einen' UIView' lassen, da Sie streben zu einen 'CardView' bekommen? –
Das erste, was ich vermute, dass CardView XIB Ansicht ist. Und setUp() darf nicht explizit aufgerufen werden, da neues CardView für sich selbst hinzugefügt wird (Rekursion bei der Initialisierung der Ansicht). Und wenn Sie raten, dass Sie die Label-Ausgänge von xib zum View-Controller selbst haben wollen, müssen Sie den Dateibesitzer in den View-Controller ändern, an den Sie die Steckdose anschließen möchten. – snjmhj
@snjmhj Das ist richtig. Ich glaube, die Steckdosen müssen der CardView-Klasse und nicht dem ViewController hinzugefügt werden. –