views:

49

answers:

1

I am creating a viewController programatically (hopefully the right way) My problem is that I previously created the controller in IB and have code I want to call in awakeFromNib. As I currently have things viewDidLoad works fine but awakeFromNib does not. Is there anyway to get awakeFromNib to call or an alternative method that I can use in its place?

@class MyViewController;

@interface TEST_ControllerAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    MyViewController *viewController;
}
@property(nonatomic, retain) IBOutlet UIWindow *window;
@end

.

@implementation TEST_ControllerAppDelegate
@synthesize window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    viewController = [[MyViewController alloc] init];
    [window addSubview:[viewController view]];
    [window makeKeyAndVisible];
    return YES;
}


- (void)dealloc {
    [viewController release];
    [window release];
    [super dealloc];
}
@end

EDIT_001:

I have pretty much come to the conclusion that using viewDidLoad is going to be my best option, particularly as I want to initialise IBOutlet instance variables.

cheers Gary

+1  A: 

In order to be called, the awakeFromNib method must be parameter-less (no sender):

- (void)awakeFromNib {
    // Do whatever is needed...
}

Take care of the casing, as no error or warning will be logged if you mistype the method.

Laurent Etiemble