【问题标题】:How to save/retrieve UIButton state?如何保存/检索 UIButton 状态?
【发布时间】:2010-10-16 12:12:44
【问题描述】:

这是我的第一个问题!

我将 UIButton 与 UISwitch 功能一起使用,并且我想保存/检索 UIButton 的状态。 请帮忙!

已解决!

感谢 Kalle 和 aBitObvious!

我使用的代码:

.h

@interface RetinaViewController : UIViewController {
IBOutlet UIButton *mybutton;

}

-(IBAction) toggleUIButtonImage:(id)sender;


@end

.m

@implementation RetinaViewController

-(IBAction) toggleUIButtonImage:(id)sender{
NSString *value = @"ON";
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
UIImage *unselectedImage = [UIImage imageNamed: @"OFFa.png"];
UIImage *selectedImage = [UIImage imageNamed:@"ONa.png"];
    if ([sender isSelected]) {
    [sender setImage:unselectedImage forState:UIControlStateNormal];
    [sender setSelected:NO];
        value = @"OFF";
        [userPreferences setObject:value forKey:@"stateOfButton"];
}else {
    [sender setImage:selectedImage forState:UIControlStateSelected];
    [sender setSelected:YES];
    value = @"ON";
    [userPreferences setObject:value forKey:@"stateOfButton"];
}

[userPreferences synchronize];
}



- (void)viewDidLoad {

NSString *value = [[NSUserDefaults standardUserDefaults]  stringForKey:@"stateOfButton"];

// If value is nil - disable the switch
if (value == nil) { 
    mybutton.selected = NO;
}
// If value is equal to ON
else if ([value compare:@"ON"] == NSOrderedSame) {

    //NSLog(@"the switch is on");

    // Set the switch to ON
    mybutton.selected = YES;

} else {

    //NSLog(@"the switch is off");

    // Set the switch to OFF
    mybutton.selected = NO;
}


    [super viewDidLoad];
}

【问题讨论】:

  • 到底是什么问题?保存看起来不错。只想知道如何找回?
  • 是的。只想知道如何找回...

标签: iphone uibutton uiswitch


【解决方案1】:

在视图控制器的 viewDidLoad 中,输入如下内容:

NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
NSString *stateOfButton = [userPreferences stringForKey:@"stateOfButton"];
if ([stateOfButton isEqualToString:@"ON"])
{
    //set button state to "selected"
}
else
{
    //set button state to "not selected"
}

【讨论】:

  • 您还需要执行 [userPreferences synchronize] 以实际保存更改。这将在您的 toggleUIButtonImage 代码中,位于 [userPreferences setObject: ...] 行下方。
  • 欢迎指出您是如何为其他有同样问题并在这里找到解决方法的人解决的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多