0

みんな、私はこれを機能させるために先週文字通り試みてきました。

ローカル通知を有効にするために UISwitch が必要なアプリがあります。
スイッチの状態の標準はオフですが、ロード時にアラームがオンのときにこれを変更する必要があります。私はscheduledLocalNotificationを試しました.BOOLを試しました.int isOnをオンのときは1に、オフのときは0に設定しようとしましたが、何もうまくいかないようです.

私が使用する if ループは ViewDidLoad にあり、次のようになります。

if (isAlarmOn == 1) {
        NSLog(@"You have notifications");
        [setAlarm setOn:YES];

    }
    else{
        NSLog(@"You have no notifications");
        [setAlarm setOn:NO];
    } 

どの戦略を使用しようとしても、うまくいかないようです。皆さんから助けを得られることを願っています。

いくつかのコード:

私のsetAlarmのコード

- (IBAction)setAlarm:(id)sender {
    NSArray *notificationArray=[[UIApplication sharedApplication] scheduledLocalNotifications];


        if (setAlarm.on) {
            [alarmStatus setText:@"Alarmen er tændt"];
            //Metode til at undersøge om klokken før eller efter officiel solned
            NSTimeInterval checkTime = [[astronomicalCalendar sunset] timeIntervalSinceDate:[NSDate date]];

            NSLog(@"Alarmen er tændt");

            if (checkTime >= 0) {
                [self scheduleNotificationToday];
            }
            else{
                [self scheduleNotificationTomorrow];
            }

             NSLog(@"antal alamer %@", notificationArray);
            isAlarmOn = 1;

                }
        else {
            //Metode til at slette alle notifikationer
             [[UIApplication sharedApplication] cancelAllLocalNotifications];
            NSLog(@"Alarmen er slukket");

            NSLog(@"antal alamer %@", notificationArray);

            isAlarmOn = 0;
        }
    }

私の UILocalNotification コード

    - (void)scheduleNotificationToday {
        Class cls = NSClassFromString(@"UILocalNotification");
        if (cls != nil) {
    //Just some stuff determine which time to alert on. 

                UILocalNotification *notif = [[cls

 alloc] init];
            notif.fireDate = [gregorian dateByAddingComponents:traekFraDag toDate:[astronomicalCalendar sunset] options:0];
            notif.timeZone = [NSTimeZone defaultTimeZone];

            notif.alertBody = @"Nu går solen snart ned";
            notif.alertAction = @"Show me";
            notif.soundName = @"Waterline.caf";
            notif.applicationIconBadgeNumber = 1;


            [[UIApplication sharedApplication] scheduleLocalNotification:notif];
        }
    }

見たいコードの他の部分があれば教えてください

4

3 に答える 3

1

これらの変数が何であるか、そしてあなたの質問が実際に何であるかについてのより良いコンテキストを私たちに与えるために、より多くのコードを投稿する必要がありますが、私はあなたが探しているかもしれないと思います:

[setAlarm setOn:YES animated:YES];

[setAlarm setOn:NO animated:YES];

..setAlarmがスイッチ名の場合??

于 2013-02-27T21:11:19.160 に答える
1

が実際にスイッチを指していることを確認してくださいsetAlarm。つまり、nil ではなく、他のスイッチを指していません。そして、変数に別の名前を付けてください! ;-)

また、スイッチの値をリセットした-viewWillAppear後に呼び出されるコードやその他のメソッドがないことを確認してください。-viewDidLoad実際、スイッチやその他の UI 要素の設定は まで延期することをお勧めします-viewWillAppear

于 2013-02-27T21:14:36.757 に答える
0

ただし、アプリがメモリからアンロードされるたびに、uiswitch はデフォルトの状態 (オフ) を示します

スイッチの状態を永続ストアに保存していません。そのため、アプリが終了すると常にオフと表示されます (クラスに対して dealloc が呼び出されます)。

アプリがメモリにないときでもスイッチの状態を保存したい場合は、その値をどこかに保存する必要があります。必要に応じて、これを使用できますNSUserDefaults

于 2013-03-04T01:34:59.970 に答える