This is similar to using a nib file to create table view cells. Here is a page that discusses how to do that.
You'll need to put an outlet in your UIViewController
subclass for the custom view, and set the UIViewController
subclass as the "File's Owner" in your custom view nib (.xib) file. Then connect the outlet you created to the top-level view object (again in your custom view nib file).
Then each time you want to instantiate your custom view in your view controller code, call:
[[NSBundle mainBundle] loadNibNamed:<custom view nib name> owner:self options:nil];
The outlet you added will then be set to point to a new instance of your custom view.
The only downside to this approach is that you will have to lay out the instances of your custom view in your view controller programatically rather than graphically in interface builder.
Another approach would create the put labels and images programatically in your UIView
subclass, and then you can add it to interface builder like you would any other UIView
subclass.