Don't rely only on the storyboard to do all the work in your game. You need some properties for which character is currently selected and other game states. Then in viewDidLoad and/or in the method for the Start Game button, set the bird.image to be blue if that's the status.
To save off this info between runs of the game utilize the messages for foreground / background state changes:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movingToBackground:) name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movingToForeground:) name:UIApplicationDidBecomeActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateDefaults:) name:UIApplicationWillTerminateNotification object:nil];
Then create those methods to handle the app moving to the background and save off the game state.
Like this:
-(void) updateDefaults: (NSNotification *) notification {
[defaults setObject:[NSNumber numberWithBool: BlueChar] forKey:@"BlueChar"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
But honestly. If you have more than one character to play you're not going to want it to be BlueChar as a bool because really you'll want something like int currentChar where currentChar=BLUE_CHAR and #define BLUE_CHAR 1 so that you can also set currentChar to be YELLOW_CHAR or ORANGE_CHAR. Maybe the BlurChar bool is used to check if it's unlocked, and the currentChar int is used to store which one you're playing with. Depends. So instead of the above you'd do:
[defaults setObject:[NSNumber numberWithInt: currentChar] forKey:@"currentChar"];
That's one way to do it anyway.
Then on the IBAction you're going to set currentChar to be BLUE_CHAR (if it's unlocked). Then call a setCharImage method which could set it based on any number of options:
-(void)setCharImage:
switch (currentChar) {
case BLUE_CHAR:
{
bird.image=[UIImage imageNamed:@"BLUE.png"];
break;
}
case YELLOW_CHAR:
{
bird.image=[UIImage imageNamed:@"YELLOW.png"];
break;
}
....
In my games I have a .h file where I stuff all the #defines like that. IMHO it's a toss up if you use those or enums. I personally prefer #defines. But I'm an old 80's C coder and I prefer those ways.