項目が通知される回数に応じて、NSDateComponents を使用して通知ごとに異なる時間を設定している uilocalnotification があります。
-(NSArray *)fireDatesForFrequency:(int)freq
{
if (freq == 1)
{
[components setHour:8];
[components setMinute:00];
NSDate *date = [gregorian dateFromComponents:components];
NSArray *dates =[[NSArray alloc]initWithObjects:date, nil];
return dates;
}
if (freq == 2) {
[components setHour:8];
[components setMinute:00];
NSDate *date1 = [gregorian dateFromComponents:components];
[components setHour:20];
[components setMinute:00];
NSDate *date2 = [gregorian dateFromComponents:components];
NSArray *dates =[[NSArray alloc]initWithObjects:date1,date2, nil];
return dates;
}
if (freq == 3)
{
[components setHour:8];
[components setMinute:00];
NSDate *date1 = [gregorian dateFromComponents:components];
[components setHour:12];
[components setMinute:00];
NSDate *date2 = [gregorian dateFromComponents:components];
[components setHour:16];
[components setMinute:00];
NSDate *date3 = [gregorian dateFromComponents:components];
NSArray *dates =[[NSArray alloc]initWithObjects:date1,date2,date3, nil];
return dates;
}
if (freq == 4)
{
[components setHour:8];
[components setMinute:00];
NSDate *date1 = [gregorian dateFromComponents:components];
[components setHour:12];
[components setMinute:00];
NSDate *date2 = [gregorian dateFromComponents:components];
[components setHour:16];
[components setMinute:00];
NSDate *date3 = [gregorian dateFromComponents:components];
[components setHour:20];
[components setMinute:00];
NSDate *date4 = [gregorian dateFromComponents:components];
NSArray *dates =[[NSArray alloc]initWithObjects:date1,date2,date3,date4, nil];
return dates;
}
return nil;
}
これらの時間を NSUserDefaults に保存して、ユーザーが必要に応じて時間を変更したい場合は、それらの時間を NSUserdefaults に保存したいと考えています。デフォルトの NSuserdefaults を userupdatednsuserdefaults に置き換えたい..datepicker でセグメント化されたコントロールがあるため、ユーザーが datepicker から時間を選択すると、その時間がデフォルトの nsuserdefaults に更新されます。
- (IBAction)didChangeSegmentControl:(UISegmentedControl *)control
{
NSInteger index = [notificationSessionTab selectedSegmentIndex];
if (index == 0)
{
[userTimePicker reloadInputViews];
[components setHour:7];;
[components setMinute:00];
NSDate *date1 = [gregorian dateFromComponents:components];
[components setHour:9];
[components setMinute:00];
NSDate *date2 = [gregorian dateFromComponents:components];
//NSArray *dates =[[NSArray alloc]initWithObjects:date1,date2,date3,date4, nil];
[userTimePicker setDatePickerMode:UIDatePickerModeTime];
[userTimePicker setMinimumDate:date1];
[userTimePicker setMaximumDate:date2];
NSDate *selectedTime =[userTimePicker date];
}
if (index == 1)
{
[userTimePicker reloadInputViews];
[components setHour:11];
[components setMinute:00];
NSDate *date1 = [gregorian dateFromComponents:components];
[components setHour:13];
[components setMinute:00];
NSDate *date2 = [gregorian dateFromComponents:components];
//NSArray *dates =[[NSArray alloc]initWithObjects:date1,date2,date3,date4, nil];
[userTimePicker setDatePickerMode:UIDatePickerModeTime];
[userTimePicker setMinimumDate:date1];
[userTimePicker setMaximumDate:date2];
NSDate *selectedTime =[userTimePicker date];
}
if (index == 2)
{
[userTimePicker reloadInputViews];
[components setHour:15];
[components setMinute:00];
NSDate *date1 = [gregorian dateFromComponents:components];
[components setHour:18];
[components setMinute:00];
NSDate *date2 = [gregorian dateFromComponents:components];
//NSArray *dates =[[NSArray alloc]initWithObjects:date1,date2,date3,date4, nil];
[userTimePicker setDatePickerMode:UIDatePickerModeTime];
[userTimePicker setMinimumDate:date1];
[userTimePicker setMaximumDate:date2];
NSDate *selectedTime =[userTimePicker date];
}
if (index == 3)
{
[userTimePicker reloadInputViews];
[components setHour:19];
[components setMinute:00];
NSDate *date1 = [gregorian dateFromComponents:components];
[components setHour:21];
[components setMinute:00];
NSDate *date2 = [gregorian dateFromComponents:components];
//NSArray *dates =[[NSArray alloc]initWithObjects:date1,date2,date3,date4, nil];
[userTimePicker setDatePickerMode:UIDatePickerModeTime];
[userTimePicker setMinimumDate:date1];
[userTimePicker setMaximumDate:date2];
NSDate *selectedTime =[userTimePicker date];
}
}