0

つまり、36個のスイッチをすべて含む6つのビューを持つアプリがあります。ユーザーがフリックしたときにすべての状態を保存する簡単な方法はありますか?それらすべてをタグなどの下に置くことについて何か聞いたが、これがどのように行われるのか見当がつかない。それらを自動的に保存してロードしてほしい。

よろしくお願いいたします。ØyvindLarsenRunestad

4

2 に答える 2

0

それを私が直した!友人からの助けを大いに感謝します。各スイッチに一意​​のタグを付け、.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];
    }
}

これが、この特定の問題に苦しんでいる他の人に役立つことを願っています。

于 2013-01-18T16:59:01.127 に答える
0

スイッチのすべての状態値を格納する配列を作成します。

その配列を保存すると、ユーザーのデフォルトになります。

アプリの起動時にそのファイルを読み取り、その配列を初期化し、スイッチボタンの状態を設定します。

于 2013-01-17T18:51:22.683 に答える