【问题标题】:Save multiple UISwitch states different Views保存多个 UISwitch 状态不同的 Views
【发布时间】:2013-01-17 18:49:27
【问题描述】:

所以我有一个包含六个视图的应用程序,总共包含 36 个开关。当用户轻弹它们时,是否有一种简单的方法可以保存所有状态?我听说过将它们全部放在标签或其他东西下,但不知道如何做到这一点。我希望它们自动保存和加载。

最好的问候, Øyvind Larsen Runestad

【问题讨论】:

  • 你用过界面生成器吗?
  • 您可以使用 Interface Builder 中的附加属性部分为每个开关设置一个 'keyPath' 属性...然后使用它从您的默认值或应用程序控制器等自动设置/获取属性。只需一个方向的想法。

标签: ios objective-c load save uiswitch


【解决方案1】:

创建一个数组来存储开关的所有状态值。

将该数组保存为用户默认值。

在应用启动时读取该文件并初始化该数组并设置开关按钮的状态。

【讨论】:

    【解决方案2】:

    我修好了!在一位朋友的非常感谢的帮助下。我给每个开关一个唯一的标签,并在我的 .h 中将它们定义为:

    #define Switchinfour0 100
    #define Switchinfour1 101
    #define Switchinfour2 102
    #define Switchinfour3 103
    #define Switchinfour4 104
    #define Switchinfour5 105
    #define Switchinfour6 106
    #define Switchinfour7 107
    #define Switchinfour8 108
    #define Switchinfour9 109
    #define Switchinfour10 110
    #define Switchinfour11 111
    #define Switchinfour12 112
    #define Switchinfour13 113
    #define Switchinfour14 114
    #define Switchinfour15 115
    #define Switchinfour16 116
    #define Switchinfour17 117
    #define Switchinfour18 118
    #define Switchinfour19 119
    #define Switchinfour20 120
    #define Switchinfour21 121
    #define Switchinfour22 122
    #define Switchinfour23 123
    #define Switchinfour24 124
    #define Switchinfour25 125
    #define Switchinfour26 126
    #define Switchinfour27 127
    #define Switchinfour28 128
    #define Switchinfour29 129
    #define Switchinfour30 130
    #define Switchinfour31 131
    #define Switchinfour32 132
    #define Switchinfour33 133
    #define Switchinfour34 134
    #define Switchinfour35 135
    #define Switchinfour36 136
    

    然后,我在我的 (IBAction)save:(id)sender 下添加了这个;

    -(IBAction)save:(id)sender{
    
        //Switch save
        NSUserDefaults* def = [NSUserDefaults standardUserDefaults];
        for (int i = 100; i < 136; i++)
        {
            UISwitch* sw = (UISwitch*)[self.view viewWithTag:i];
            [def setBool:sw.on forKey:[NSString stringWithFormat:@"Switch%d", i]];
        }
        [def synchronize];
    

    然后,在 viewDidLoad 的正上方我添加了这个:

    -(void)switchChanged:(id)switchCtl
    {
        UISwitch* sw = (UISwitch*)switchCtl;
        NSUserDefaults* def = [NSUserDefaults standardUserDefaults];
        [def setBool:sw.on forKey:[NSString stringWithFormat:@"Switch%d", sw.tag]];
        [def synchronize];
    }
    

    最后,在我的超级 viewDidLoad 中,我简单地添加了这个:

    - (void)viewDidLoad
    
    {
        [super viewDidLoad];
    
        // Do any additional setup after loading the view, typically from a nib.
    
        NSUserDefaults* def = [NSUserDefaults standardUserDefaults];
        for (int i = 100; i < 162; i++)
        {
                UISwitch* sw = (UISwitch*)[self.view viewWithTag:i];
                [sw setOn:[def boolForKey:[NSString stringWithFormat:@"Switch%d", i]]];
    
            [sw addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
        }
    }
    

    我希望这可以帮助任何其他遇到这个特殊问题的人。

    【讨论】:

      猜你喜欢
      • 2016-07-24
      • 1970-01-01
      • 2018-10-25
      • 2011-10-03
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多