使用 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 访问/定位