保存多个UISwitch状态

时间:2012-05-21 03:41:18

标签: objective-c ios xcode

我一直在尝试为UISwitch文件中的多个交换机保存grocery.m状态,因此当用户终止应用时,交换机的状态将保持不变。这就是我到目前为止所做的一切,但没有任何运气。我认为问题必须在我的grocery.m文件中,而不是appDelegate.m。如果有人能告诉我我的错误在哪里,我们将不胜感激。谢谢!

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


NSUserDefaults* defaults  = [NSUserDefaults standardUserDefaults];    

push.switchstore1.on = [defaults boolForKey: @"mySwitch1"];
push.switchstore2.on = [defaults boolForKey: @"mySwitch2"];
push.switchstore3.on = [defaults boolForKey: @"mySwitch3"];

UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminate:) name:UIApplicationWillTerminateNotification object:app]; //Listener
    }

 - (void)applicationWillTerminate:(UIApplication *)application {



NSUserDefaults* defaults  = [NSUserDefaults standardUserDefaults];
[defaults setBool: push.store1.on forKey: @"mySwitch1"];
[defaults setBool: push.store2.on forKey: @"mySwitch2"];
[defaults setBool: push.store3.on forKey: @"mySwitch3"];

[[NSUserDefaults standardUserDefaults] synchronize];
[self saveContext]; //Already in the method by default
}

WITHIN GROCERY.M

  -(void) viewDidLoad
 { 
 NSUserDefaults* defaults  = [NSUserDefaults standardUserDefaults];
 switchStore1.on = [defaults boolForKey: @"mySwitch1"];
 switchStore2.on = [defaults boolForKey: @"mySwitch2"];
 switchStore3.on = [defaults boolForKey: @"mySwitch3"];
 }

编辑已添加到delegate.h的内容(属性也已在.m中合成)

groceryViewController *push;
@property (nonatomic, retain) groceryViewController *push;

2 个答案:

答案 0 :(得分:0)

在您的applicationWillTerminate中,您将启动一个全新的groceryViewController,它始终具有交换机的默认“关闭”值。您需要使用在应用程序的didFinishLaunchingWithOptions中实例化的相同groceryViewController。有多种方法可以做到这一点,包括使用全局变量或使用AppDelegate中的属性。

答案 1 :(得分:0)

您始终在创建groceryViewController的新实例,因此不会引用您想要捕获信息的相同内存位置。