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?
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.