2012-03-24 53 views
0

对不起谷歌翻译的出错,很多错误,测试报警正确的时间

我想使在Xcode报警,但我AVE问题,万物正常工作,如果我使用一个选择器视图的日期和时间,但如果我切换选择器视图在一个只有时间,这是不可能的设置闹钟,因为如果我设置闹钟在一次之前,现在立即响起,

我怎么能解决不使用选择器视图与日期?

这是设置闹钟的动作。

PS遗憾的预览消息,也许我的英语比较好,然后谷歌翻译...

// 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; 

对于后设定的报警时间集中我用这个:

// 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]; 

}

我尝试将你的代码整合到我的程序中,但没有成功

+0

请使用正确的英语。我不明白你的意思。 – dasdom 2012-03-24 21:18:13

+0

不好意思谷歌翻译犯错误,很多错误, 我想在Xcode中发出警报,但我有一个问题,万物工作正常,如果我用日期和时间选择器视图,但如果我切换选择器视图在一个只有时间,这是不可能的设置闹钟,因为如果我立即设置闹钟,现在立即响起, 我怎么能解决没有使用选择器视图与日期? 这是设置闹钟的动作。 PS对不起,预览消息也许我的英语更好,然后谷歌翻译... – Acunamatata 2012-03-24 21:29:29

回答

1

这将从选择器的当前日期加时间,然后添加如果有一天的时间在过去,这样的警报始终处于未来:

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

是正是我的意思......但我不明白我可以使用这部分代码?什么是“CurrentDate”。感谢您的帮助! – Acunamatata 2012-03-24 21:53:18

+0

我修改了原始答案中的代码。它应该是你正在寻找的东西! – lnafziger 2012-03-24 22:02:57

+0

问题是我用它来执行闹钟 – Acunamatata 2012-03-24 23:00:53