J'essaie d'implémenter le style de balayage de cartes Koloda. J'ai créé un fichier .xib structuré en Image 1 & 2. Impossible de connecter IBOutlet au fichier XIB
Comme vous pouvez le voir dans l'image 1, j'ai défini le propriétaire du fichier comme la classe personnalisée des fichiers XIB.
Dans l'image 2, j'ai laissé le blanc classe (pas sûr si cela est correct)
Ma classe NIB est par le code ci-dessous.
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
}
}
Dans mon contrôleur, j'ai la vue pour l'index comme ci-dessous; Je ne peux pas insérer mes IBOutlets et les référencer dans mon UIViewController. Comme j'obtiendrai des informations de FirDatabase & de geoFire et remplissant les vues. Je comprends que cela a quelque chose à voir avec le propriétaire du fichier. Je ne suis pas sûr sur la façon de définir les IBOutlets à la sous-vue au lieu de la classe personnalisée.
Toute aide appréciée.
Pourquoi voudriez-vous laisser 'méthode koloda' pour renvoie une 'UIView' puisque vous visez à obtenir un 'CardView'? –
Première chose que je devine que CardView est la vue XIB. Et setUp() ne doit pas être appelé explicitement car CardView sera ajouté sur lui-même (récursivité lors de l'initialisation de la vue). Et en supposant que vous voulez que les sorties d'étiquette de xib au contrôleur de vue lui-même, vous devez changer le propriétaire du fichier pour le contrôleur de vue où vous voulez la prise. – snjmhj
@snjmhj C'est correct. Je crois que les prises doivent être ajoutées à la classe CardView et non au ViewController. –