我有2个视图控制器...游戏设置视图控制器(包含UISwitch)&游戏视图控制器。默认情况下,交换机的状态为ON(在故事板中设置)。该开关的功能是将对象设置为向上或向下。
步骤:
1.当我第一次加载游戏时,开关打开,我玩游戏并且根据开关设置为ON(在这种情况下向上)正确移动物体。
2.我关闭并重新打开游戏,开关打开,我将其切换为关闭,我玩游戏并根据开关设置正确移动物体(在这种情况下向下)。
[BUG] - 3.我关闭并重新打开应用程序,开关重新打开(因为这是默认设置),我玩游戏并且对象无法根据开关设置正确移动。它应该向上,因为开关打开。
[替代方法] - 我必须关闭开关然后再打开它才能工作。
以下是我的2个视图控制器:
GameSettingsViewController:
·H
@property (nonatomic, strong) IBOutlet UISwitch *UISwitchInvertGravity;
的.m
-(IBAction)SwitchGravity {
NSUserDefaults *GravitySwitchValue = [NSUserDefaults standardUserDefaults];
[GravitySwitchValue setBool:self.UISwitchInvertGravity.on forKey:@"SwitchOn"];
[GravitySwitchValue synchronize];
GameViewController
的.m
-(void)ObjectMoving {
NSUserDefaults *GravitySwitchValue = [NSUserDefaults standardUserDefaults];
BOOL SwitchOn = [GravitySwitchValue boolForKey:@"SwitchOn"];
if (SwitchOn) {
object.center = CGPointMake(object.center.x, object.center.y + objectFlight);
objectFlight = objectFlight - 5;
if (objectFlight < -15) {
objectFlight = -15;
}
}
else {
object.center = CGPointMake(object.center.x, object.center.y - objectFlight);
objectFlight = objectFlight - 5;
if (objectFlight < -15) {
objectFlight = -15;
}
}
if (objectFlight > 0) {
object.image = [UIImage imageNamed:@"object-down.png"];
}
if (objectFlight < 0) {
object.image = [UIImage imageNamed:@"object-up.png"];
}
}
答案 0 :(得分:1)
我认为你需要这样做:
1在app delegate中将userdefault中的“SwitchOn”设置为yes(此功能只是一次运行 首次启动应用程序。)。
2当您进入(加载)包含该UISwitch的viewcontroller时,将UISwitch的值设置为与“SwitchOn”userdefault值相同。
答案 1 :(得分:0)
如果我确切地知道所期望的效果是什么,我可以更好地回答它。不过,这是我的猜测。
设置UISwitch的视觉默认值不会自动将存储的 NSDefault&#34; SwitchOn&#34; 值更新为 YES / NO 布尔。
所以这是您的选择:
如果您选择选项2,我强烈建议您只是删除此NSDefault逻辑,如果您不在任何地方使用它,因为在这种情况下它基本上没用。