简体   繁体   中英

Add a xib file to ad UIView

I'm having this method where i'm creating a draggableView. I've beside this created a xib file, which i would like to add as a subview to this draggableView. How can i do this? The reason i want to do this is that i'm going to create a lot of xib files so the content will vary.

override func viewDidLoad() {
    super.viewDidLoad()
    self.loadCards()

}

func createDraggableViewWithDataAtIndex(index: NSInteger) -> DraggableView {
    let draggableView = DraggableView(frame: CGRectMake(12, 12, self.view.frame.width-24, self.view.frame.height-24-49-64))
    draggableView.layer.borderWidth = 1
    draggableView.layer.borderColor = UIColor.lightGrayColor().colorWithAlphaComponent(0.5).CGColor
    draggableView.delegate = self

    let subviewArray = NSBundle.mainBundle().loadNibNamed("AdViewController", owner: self, options: nil)
    let mainView = subviewArray[0] as! UIView;
    draggableView.addSubview(mainView);


    return draggableView
}

func loadCards() -> Void {
    if exampleCardLabels.count > 0 {
        let numLoadedCardsCap = exampleCardLabels.count > MAX_BUFFER_SIZE ? MAX_BUFFER_SIZE : exampleCardLabels.count
        for var i = 0; i < exampleCardLabels.count; i++ {
            let newCard: DraggableView = self.createDraggableViewWithDataAtIndex(i)

            allCards.append(newCard)
            if i < numLoadedCardsCap {
                loadedCards.append(newCard)
            }
        }

        for var i = 0; i < loadedCards.count; i++ {
            if i > 0 {
                self.view.insertSubview(loadedCards[i], belowSubview: loadedCards[i - 1])
            } else {
                self.view.addSubview(loadedCards[i])
            }
            cardsLoadedIndex = cardsLoadedIndex + 1
        }
    }
}

Before: 在此处输入图片说明

After

在此处输入图片说明

That's how you add a custom view from xib

    let subviewArray = NSBundle.mainBundle().loadNibNamed("MyCustomView", owner: self, options: nil)
    let mainView = subviewArray[0] as! UIView;
    draggableView.addSubview(mainView);

If I understand well you want to add the mainView of your xib as a subView of your draggableView? If yes just get the view from xib:

   let view = UINib(
            nibName: nibNamed,
            bundle: bundle
        ).instantiateWithOwner(nil, options: nil)[0] as? UIView

And then add it as Subview to your draggrableView

draggableView.addSubview(view)

hope it helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM