私はコードでこのビュー階層をシミュレートしようとしている中で、既存のサブビューにビューを追加することはできません したがって、このような接続コンテナ」:は、ストーリーボードをプログラム
"scene"
"view Shop Main" -> `UIView`
"view shop scroll" -> `UIScrollView`
"ViewDetail" -> `UIView`
"Shop Connected Container" -> `UIView`
"Connected Shop" -> `UIView`
"Connected Shop" -> `UIView`
"Connected Shop" -> `UIView`
どのように私はこれはプログラム的に行うことができます? サブビューごとにカスタムクラスがあり、xibファイルもあります。 これは私がコードからサブビューをインスタンスだ方法です:
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)
もまったく同じ結果でこれを試してみました:
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)
しかし追加「新しい」ビューは、他のビューの下にあります私はストーリーボードから既存のビューをインスタンス化しているので、意図した動作ではありません。
私はストーリーボード階層の順序に従っています。また、ビューはカスタムクラスとリンクされ、xibファイルもあります。しかし、私は私のアプリを実行するとき、私はこの変わった問題を持っています
私はここで間違って何ですか?助けてください
を同じ操作を行います
first
オブジェクトを取ってそこ以来取り組んでいる言ったように、今のビューはなります対応するコントローラがインスタンス化されると自動的にロードされます。コントローラクラスで必要なビューのコンセントを作成して使用することができます。 loadNibNamedを使用してプログラムでロードする必要はありません。 –はい、ビューが作成されます。しかし、私はプログラムでビューの数を設定したいので、1にするか、10にすることができます。複数のビューを作成するには、このビューを何回もインスタンス化する必要があります。これどうやってするの? – user3033437