使用 Interface Builder 进行切换

Posted

技术标签:

【中文标题】使用 Interface Builder 进行切换【英文标题】:Using Interface Builder for a Switch 【发布时间】:2012-12-20 09:54:36 【问题描述】:

如果使用 interface builder 将 Switch 拖到 xib 文件中,则可以在 IB 中将状态设置为 on/off。有没有办法将开关的状态保存到下次应用启动时,以便开关处于关闭之前的相同状态?

【问题讨论】:

【参考方案1】:

您可以使用NSUserDefaults 保存它。

首先将您的交换机连接为 IBOutlet

@property (weak, nonatomic) IBOutlet UISwitch *mySwitch;

还将您的交换机连接为 IBAction,事件类型为“Value Changed”

- (IBAction)switched:(id)sender;

然后在你的 UIViewController 的viewDidLoad

BOOL savedState = [[NSUserDefaults standardUserDefaults] boolForKey:@"mySwitch"];
[self.mySwitch setOn:savedState];

在新的switched: 操作中

- (IBAction)switched:(id)sender

    if (sender == self.mySwitch)
    
        [[NSUserDefaults standardUserDefaults] setBool:self.mySwitch.isOn forKey:@"mySwitch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    

希望这会有所帮助。

【讨论】:

非常感谢。完美运行。但是我不得不将(弱,非原子)更改为(非原子,保留) 哦,对不起。我不知道您没有使用自动引用计数 (ARC)。【参考方案2】:

您可以为此使用NSUserDefaults。

保存开关状态如下:

BOOL yourSwitchState = yourSwitch.on;
[[NSUserDefaults standardUserDefaults] setBool:yourSwitchState forKey:@"Switch"];

viewWillAppear 中获取用户默认值并将其设置为切换:

BOOL switchState = [[NSUserDefaults standardUserDefaults] boolForKey:@"Switch"];
yourSwitch.on = switchState;

【讨论】:

【参考方案3】:

试试这个,

(void)handleSwitch:(UISwitch *)switch

如果(开启)

     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"SwitchState"];

否则

//

    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"SwitchState"];

下次启动应用时

switch.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"SwitchState"];

【讨论】:

以上是关于使用 Interface Builder 进行切换的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Interface Builder 中使用跟踪图像进行视图设计?

在 Interface Builder 中自定义 UITableViewCell

我应该 nil 通过 Interface Builder 进行的委托引用吗?

在 Interface Builder 中构建 UIView

在 Interface Builder 文件中接收错误 Unknown class PFImageView 进行解析

使用 Interface Builder 构建的自定义 UIView 可通过 Interface Builder 访问/定位