0

Bellow 我有一些代码通过 Xcode 中的委托系统简单地隐藏了一个按钮。我相信这一切都有效,但是当我将视图传输回“leveSelector”视图时,委托无效,因此按钮不会显示为未隐藏。因此,我想应用一些NSUserDefaults来保存按钮状态,这样当我稍后在游戏中返回“levelComplete”视图时,我希望按钮不被隐藏。

delegate在这里,我有我正在使用的系统的代码:

在这里,我有 levelComplete 代码... .h

#import <UIKit/UIKit.h>
#import "levelComplete.h"
#import "LevelSelector.h"

@interface levelComplete : UIViewController{
  }
 @property (nonatomic, strong) id<CustomDelegate> delegatePpty;

 @end

.m

@implementation levelComplete
@synthesize delegatePpty;

-(void)someAction
 {
[self.delegatePpty hideUnhidebutton:YES];//Call the delegate method to execute
 }


 - (void)viewDidLoad
   {
     [super viewDidLoad];
     // Do any additional setup after loading the view from its nib.
     [self someAction]; // Here I call my action
   }
@end

在这里,我有 levelSelector 代码...

。H

  @protocol CustomDelegate <NSObject>
  -(void)hideUnhidebutton:(BOOL)value;
  @end

#import <UIKit/UIKit.h>
#import "levelComplete.h"
#import "LevelSelector.h"

@interface LevelSelector : UIViewController <CustomDelegate>{        

}

@property (nonatomic, strong) UIButton *level1;

@end

.m

@implementation LevelSelector
@synthesize level1;

-(void)hideUnhidebutton:(BOOL)value
 {
  [self.level1 setHidden:value];

  }

因此,为了澄清,我想在按钮被隐藏为NSUserDefault. 在这种情况下,我希望隐藏的按钮称为level1

编辑:感谢所有发布应用您的代码的人工作得很好

4

3 回答 3

4

您可以以NSUserDefaults简单的方式将值保存到:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSNumber numberWithBool:value]
             forKey:@"SomeSensibleKey"];

您可以使用以下命令检查保存的状态:

[[defaults objectForKey:@"SomeSensibleKey"] boolValue]
于 2013-04-02T11:19:57.283 回答
1

Sapi 的回答已经涵盖了您的评论我将如何加载 NSUserDefaults

BOOL yourBoolValue = YES;

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSNumber numberWithBool:yourBoolValue] forKey:@"YourVariableKey"];

最后一行已经有了你想要的结果。[NSUserDefaults standardUserDefaults] 是一个单例并且也是持久的,因此您可以在每个上下文中创建它,并具有相同的实例。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL restoredBoolValue = [[defaults objectForKey:@"YourVariableKey"] boolValue];
[self.level1 setHidden:restoredBoolValue]; 

蚂蚁就是这样。您基本上可以将所有内容保存在 NSUserDefaults 中。只需查看Apple 的参考资料

于 2013-04-02T11:58:23.617 回答
1

要将布尔值保存到用户默认值,您必须调用 setBool 方法:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:YES forKey:@"ButtonHiddenKey"];

从用户默认值加载布尔值(在 init 方法中):

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
button.hidden = [defaults boolForKey:@"ButtonHiddenKey"];

还有消息存储其他类型的变量如setInteger、setFloat等

于 2013-04-02T12:04:04.277 回答