Когда я запускаю свое приложение, оно переходит в домашний вид и не отображает существующие палитры, сохраненные в NSUserDefaults. Но когда я нажимаю кнопку «Новая палитра» и возвращаюсь, она показывает новую и все существующие. Не могу добраться до сути этого. Любая помощь приветствуется.
приложение делегат.h:
@interface palettesAppDelegate : NSObject <UIApplicationDelegate> {
NSMutableArray *colourPalettesContainer;
NSUserDefaults *prefs;
}
@property (assign, readwrite) NSUserDefaults *prefs;
@property (assign, readwrite) NSMutableArray *colourPalettesContainer;
@end
приложение делегат.m:
#import "palettesAppDelegate.h"
@implementation palettesAppDelegate
@synthesize colourPalettesContainer, prefs;
- (void)dealloc {
[colourPalettesContainer release];
[super dealloc];
}
@end
Homeview.h:
#import <UIKit/UIKit.h>
#import "HandlingPalettes.h"
@interface HomeView : UIViewController {
HandlingPalettes *handlingPalettes;
}
@end
Homeview.m:
#import "HomeView.h"
#import <QuartzCore/QuartzCore.h>
@implementation HomeView
- (void)viewDidLoad {
[super viewDidLoad];
palettesAppDelegate *dataCenter = (palettesAppDelegate *)[[UIApplication sharedApplication] delegate];
dataCenter.prefs = [NSUserDefaults standardUserDefaults];
dataCenter.colourPalettesContainer = [dataCenter.prefs objectForKey:@"palettes"];
handlingPalettes = [[HandlingPalettes alloc] init];
[handlingPalettes newPalette];
}
-(void)viewWillAppear:(BOOL)animated {
NSLog(@"view will appear: %i", [dataCenter.colourPalettesContainer count]);
int numberOfExisting = [dataCenter.colourPalettesContainer count];
}
- (void)dealloc {
[handlingPalettes release];
[super dealloc];
}
@end
HandlingPalettes.h:
#import <UIKit/UIKit.h>
@interface HandlingPalettes : UIViewController {
}
-(void)newPalette;
@end
HandlingPalettes.m:
#import "HandlingPalettes.h"
#import "HomeView.h"
#import "palettesAppDelegate.h"
@implementation HandlingPalettes
-(void)newPalette {
palettesAppDelegate *dataCenter = (palettesAppDelegate *)[[UIApplication sharedApplication] delegate];
//If this is the first palette
if (dataCenter.colourPalettesContainer == nil) {
dataCenter.colourPalettesContainer = [[NSMutableArray alloc] init];
}
//Add a new palette
[dataCenter.colourPalettesContainer addObject:@"Test1", @"Test2", nil];
NSLog(@"Handling: %i", [dataCenter.colourPalettesContainer count]);
[dataCenter.prefs setObject:dataCenter.colourPalettesContainer forKey:@"palettes"];
[dataCenter.prefs synchronize];
}
- (void)dealloc {
[super dealloc];
}
@end