2012-03-24 7 views
0

Leider google make Fehler übersetzen, zu vielen Fehler,-Test richtige Zeit in Alarm

i in Xcode einen Alarm machen wollen, aber ich ave ein Problem, every gut funktionieren, wenn ich eine Picker Ansicht mit Datum und Uhrzeit zu verwenden, Aber wenn ich die Picker-Ansicht in eine mit nur Zeit umschalten, ist es unmöglich, den Alarm einzustellen, denn wenn ich den Alarm zu einem Zeitpunkt vor dem Klingeln sofort einstelle,

Wie kann ich für lösen ohne eine Picker-Ansicht mit Datum zu tun ?

Mit dieser Aktion wird der Alarm ausgelöst.

PS sorry für die Vorschauen Nachricht vielleicht mein Englisch besser als Übersetzungs ist ...

// Set Allarm Uno 

-(IBAction)setAlarmUno:(id)sender{ 

NSLog(@"In Alarm Date"); 
NSDateFormatter *formatter = 
[[[NSDateFormatter alloc] init] autorelease]; 
NSLog(@"About to Set Date"); 
AlarmDateUno = [alarmDatePickerUno date]; 
[formatter setTimeStyle:NSDateFormatterShortStyle]; 
isAlarmUnoOn = 1; 


// Setta la label della data con l'orario 

NSString *notifyTime = [[NSString alloc]initWithString:[formatter stringFromDate:AlarmDateUno]]; 
NSMutableString *alarmString = [[NSMutableString alloc]initWithString:@""]; 
NSString *temp = [[NSString alloc] initWithString:[formatter stringFromDate:AlarmDateUno]]; 
[alarmString appendString:temp]; 
[LabelalarmUno setText:alarmString]; 


    if(clicked == 0) 
     {    
      clicked =1; 
      [btOnOffUno setImage:[UIImage imageNamed:@"OnBtn.png"] forState:UIControlStateNormal]; 
       bellOne.hidden = NO; 

      } 

    else 
     { 
      clicked = 0; 
      [btOnOffUno setImage:[UIImage imageNamed:@"OffBtn.png"] forState:UIControlStateNormal]; 
       bellOne.hidden = YES; 
       isAlarmUnoOn = 0; 

Für Zeit nach dem eingestellten Alarm Pooling ich benutze diese:

// CONTROLLO TEMPO UNO 

    - (void)runTimerUno { 

      myTickerUno = [NSTimer scheduledTimerWithTimeInterval: 0.5 
              target: self 
              selector: @selector(showActivityUno) 
              userInfo: nil 
              repeats: YES]; 

    } 

    - (void)showActivityUno { 
    NSDateFormatter *formatter = 
     [[[NSDateFormatter alloc] init] autorelease]; 
NSDate *date = [NSDate date]; 

if(isAlarmUnoOn == 1 && AlarmUnoPlaying ==0){ 
    NSLog(@"Going to compare times Uno"); 
    NSDate *d = [date earlierDate:AlarmDateUno]; 
    NSLog(@"Compared Times Uno"); 


    if (d == date) { 
     NSLog(@"Current time earlier Uno"); 
    } 
    else if (d == AlarmDateUno) { 
     AlarmUnoPlaying = 1; 

     [self playAlarmSoundUno]; 
    }    

} 
[formatter setTimeStyle:NSDateFormatterMediumStyle]; 

}

Ich versuche deinen Code ohne Erfolg in meinen zu integrieren.

+0

Bitte korrektes Englisch verwenden. Ich verstehe nicht, was du meinst. – dasdom

+0

Sorry Google Translate Fehler machen, zu viele Fehler, Ich möchte einen Alarm in Xcode, aber ich habe ein Problem, everythings funktioniert gut, wenn ich eine Picker-Ansicht mit Datum und Uhrzeit verwenden, aber wenn ich die Picker-Ansicht in einem mit nur zeit, es ist unmöglich, den alarm, denn wenn ich den alarm zu einem zeitpunkt vor jetzt sofort klingeln, wie kann ich für lösen ohne eine wähler ansicht mit datum zu tun? Dies ist die Aktion, die den Alarm ausgelöst hat. PS Entschuldigung für die Vorschau Nachricht vielleicht mein Englisch ist besser als Google Translate ... – Acunamatata

Antwort

1

Dies wird die Zeit von dem Picker zum aktuellen Datum hinzufügen und dann einen Tag hinzuzufügen, wenn die Zeit in der Vergangenheit ist, so dass der Alarm immer in der Zukunft ist:

AlarmDateUno    = [alarmDatePickerUno date]; 
NSCalendar *currentCalendar = [NSCalendar currentCalendar]; 

// Get the current date & time, and modify it to the beginning of the day (midnight). 
NSDate *currentDate = [NSDate date]; 
NSDateComponents *currentDateComponents = [currentCalendar components: NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:currentDate]; 
currentDate = [currentCalendar dateFromComponents:currentDateComponents]; 

// Add the time from the picker to the currentDate (midnight value) to give us today's date with the picker time. 
AlarmDateUno = [currentDate dateByAddingTimeInterval:[AlarmDateUno timeIntervalSinceReferenceDate]]; 

// Now, if AlarmDateUno is before the current time, assume that we mean tomorrow and add one day: 
if ([currentDate compare:AlarmDateUno] == NSOrderedAscending) { 
    // Add one day to the current alarm time. 
    NSDateComponents *oneDay = [[NSDateComponents alloc] init]; 
    [oneDay setDay:1]; 
    AlarmDateUno = [currentCalendar dateByAddingComponents:oneDay toDate:AlarmDateUno options:0]; 
} 
+0

Ja ist genau das, was ich meine ... aber ich verstehe nicht, wo ich diesen Teil des Codes verwenden kann? und was ist "CurrentDate". Danke fürs Helfen! – Acunamatata

+0

Ich habe den Code von meiner ursprünglichen Antwort geändert. Es sollte sein, wonach Sie suchen! – lnafziger

+0

Das Problem ist, dass ich dies verwenden, um den Alarm durchzuführen – Acunamatata