I'll try to make this as short as I can.
I wrote a custom class that extends UIView with a couple of IBOutlet properties, and it has a XIB associated with it where those IBOutlets are linked to.
I then want to take that class, embed it in some other XIB (for example, a table cell), and just have it work.
It seems that when I embed that custom class in the new XIB, it does not recognize the original XIB I associated with it, so it asks for me to reset the IBOutlets to interface elements on the new XIB. This is lame.
Does anyone understand what I am trying to do and have a good approach?
Here's how I managed to make this work:
In Interface Builder
Open your outer nib and do this:
In Xcode
In your outer view controller's viewDidLoad method, add these two lines:
[self.innerView addSubview:self.innerViewController.view];
self.innerViewController.view.frame = CGRectMake(0, 0, self.innerView.frame.size.width, self.innerView.frame.size.height);
If your outer nib is a custom UITableViewCell, put those lines in your awakeFromNib method instead.
Build & Run!
I assume you're simply putting UIViews in a nib for use by a UIViewController that's purely in code. Apple calls this a detached nib file.
Follow the guide I linked to for details and example of how to get this to work.
Regarding embedding a view inside another in Interface Builder, you need to add a UIView element from the Library into the parent view, and set its class in the Inspector. Once the class of the embedded view is set, your IBOutlets should be visible.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With