Ich versuche, diese Ansicht Hierarchie in Code zu simulieren:kann nicht im Hinblick auf eine bestehende subview in Storyboard hinzufügen programmatisch
"scene"
"view Shop Main" -> `UIView`
"view shop scroll" -> `UIScrollView`
"ViewDetail" -> `UIView`
"Shop Connected Container" -> `UIView`
"Connected Shop" -> `UIView`
ich multiples „Connected Shop“ instanziiert wollen und fügen Sie sie in „Shop verbunden Container“ So wie folgt aus:
"scene"
"view Shop Main" -> `UIView`
"view shop scroll" -> `UIScrollView`
"ViewDetail" -> `UIView`
"Shop Connected Container" -> `UIView`
"Connected Shop" -> `UIView`
"Connected Shop" -> `UIView`
"Connected Shop" -> `UIView`
Wie kann ich dies tun programmatisch ?? Ich habe eine benutzerdefinierte Klasse für jede Unteransicht und eine XIB-Datei. Dies ist, wie ich die Subviews aus dem Code bin instanziiert:
override func viewDidLoad() {
/*1*/ let vShopMain = NSBundle.mainBundle().loadNibNamed("viewShopMain", owner: self, options: nil).first as! viewShopMain
/*2*/ let vShopScroll = NSBundle.mainBundle().loadNibNamed("viewShopScroll", owner: vShopMain, options: nil).first as! viewShopScroll
/*3*/ let vDetail : UIView = NSBundle.mainBundle().loadNibNamed("viewDetail", owner: vShopScroll, options: nil).first as! viewDetail
//
//
/*4*/ let sConContainer : UIView = NSBundle.mainBundle().loadNibNamed("shopConnectedContainer", owner: vDetail, options: nil).first as! shopConnectedContainer
/*5*/ let cShop = NSBundle.mainBundle().loadNibNamed("connectedShop", owner: sConContainer, options: nil).first as! connectedShop
cShop.bannerTitle.text = "Shop Title"
vShopMain.addSubview(vShopScroll)
vShopScroll.addSubview(vDetail)
vDetail.addSubview(sConContainer)
sConContainer.addSubview(cShop)
self.view.addSubview(sConContainer)
auch versucht, dies mit dem exakt gleichen Ergebnis:
let vShopMain = UINib(nibName: "viewShopMain", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! viewShopMain
let scroll = UINib(nibName: "viewShopScroll", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! viewShopScroll
let vDetail = UINib(nibName: "viewDetail", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! viewDetail
let sConContainer = UINib(nibName: "shopConnectedContainer", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! shopConnectedContainer
let cShop = UINib(nibName: "connectedShop", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! connectedShop
cShop.bannerTitle.text = "hola"
vShopMain.addSubview(scroll)
scroll.addSubview(vDetail)
vDetail.addSubview(sConContainer)
sConContainer.addSubview(cShop)
self.view.addSubview(sConContainer)
Aber die „neuen“ hinzugefügt Ansichten unter der anderen Ansicht sind, Das ist nicht das beabsichtigte Verhalten, da ich vorhandene Ansichten vom Storyboard instanziiere und keine neuen erzeuge.
Ich folge der Reihenfolge der Storyboard-Hierarchie. Auch die Ansichten sind mit ihren benutzerdefinierten Klassen verknüpft, und sie haben ihre XIB-Dateien. Aber wenn ich meine App starte, habe ich dieses seltsame Problem
Was mache ich hier falsch? Bitte helfen Sie
'Ansicht der benutzerdefinierten Klassen Bereich genug in storyboard' das ist zugewiesen, jetzt wird der Blick automatisch geladen werden, wenn der entsprechende Controller instanziiert wird. Sie können eine Steckdose in der von Ihnen gewünschten Ansicht in der Controller-Klasse erstellen und verwenden. Keine Notwendigkeit, es zu laden programmgesteuert laden mit 'loadNibNamed' –
ja, die Ansicht wird erstellt. Aber ich möchte die Anzahl der Ansichten programmatisch einstellen, also kann es 1 sein oder es kann 10 sein. Ich muss diese Ansicht mehrere Male instanziieren, um mehr als eine zu erstellen. Wie kann ich das machen? – user3033437