Load custom UIView with XIB from a View Controller's view using IB
initwithcoder, ios, nib, uiview, xib
Solution
You are correct. IB uses initWithCoder. initWithCoder should look very similar to your other init methods:
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
// CUSTOM INITIALIZATION HERE
}
return self;
}
Once you assign your class within IB, you won't need to instantiate it from the bundle unless I'm misunderstanding your intention.
Problem
I have a custom `UIView` (`MyCustomUIView`) which is built using Interface Builder. I'd like to place this custom view in `MyViewController`'s view, which is also designed using IB. I've placed an `UIView` as a subview in `MyViewController`'s XIB and set it's class to `MyCustomUIView`. The problem is, when I run the code, only a blank view appears. (When I instantiate `MyCustomUIView` in code, it displays well.) I'm only overriding the `initWithFrame:` method the following way in `MyCustomUIView.m`: ``` - (id)initWithFrame:(CGRect)frame { [[NSBundle mainBundle] loadNibNamed:@"MyCustomUIView" owner:self options:nil]; self = self.view; return self; } ``` What should I do to make the view load properly? How should `initWithCoder:` look like?