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:
Open your outer nib and do this:
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.
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.