I could not figure out how to get IB to understand the structure you are using (I tried to do this with the paid / free application that I did in the past). Here is how I solve my problem:
I did not use conditional compilation in my @interface definition. I just defined the class as usual, as if it were a paid, non-advertising version. Let me call it MyPaidViewController.
@interface MyPaidViewController : UIViewController <UIActionSheetDelegate> {
Then I created a subclass of MyPaidViewController, which was for the free version. Sort of:
@interface MyFreeViewController : MyPaidViewController <ADBannerViewDelegate> {
Since I usually needed to use a different xib for my free version than for my paid version (because I had to move things to make room for ads), I would just pay xib using MyPaidViewController, as File Owner and my free xib use MyFreeViewController as the owner of the file.
The Builder interface will also see IBOutlets from superclasses, so you can reference myLabel in your free xib.
Make sure MyPaidViewController is part of the free and paid build goals, but MyFreeViewController should only be part of the free build goal.
source share