UIDatePicker在默认情况下不返回当前时间和日期

时间:2013-10-18 06:39:07

标签: iphone objective-c cocoa-touch uidatepicker

默认情况下,当我在余下的应用程序中创建UIDate选择器时,当我点击完成时,必须在默认情况下输入当前时间,或者如果日期选择器是动画的,则日期值可以更改,但在我的情况下默认情况下不返回当前时间!请帮助,1。我的RemainderSetUpViewcontroller.h `

@protocol RemainderDelegate <NSObject>
-(void)store:(NSArray *) remainderDel:(NSArray *) TimeDateDel;
@end

@interface RemainderSetUpViewcontroller : UIViewController<UITextFieldDelegate,UITextFieldDelegate>
{

    UITextField *textField1;
    NSString *str;
    UIDatePicker *datePicker;
    NSDate *date;
    NSMutableArray *remainder;
    NSMutableArray *TimeDate;
    UILocalNotification* notification;
}

@property (strong, nonatomic)IBOutlet NSString* remainderr;
@property (strong, nonatomic)IBOutlet NSString *index;
@property(strong, nonatomic) id <RemainderDelegate> delegate;
-(void)addRemainder;
-(void)actionDone;
@end
` 

2My RemainderSetUpViewcontroller.m:

- (void)viewDidLoad
{


    [super viewDidLoad];

    [self.view setBackgroundColor:[UIColor whiteColor]];
    UIBarButtonItem *add = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(addRemainder)];
    self.navigationItem.rightBarButtonItem=add;

    //TextField1...............................................................................................................   

    self.title=@"Add Remainder";


    textField1 = [[UITextField alloc]initWithFrame:CGRectMake(20, 60, 280, 34)];
    textField1.borderStyle = UITextBorderStyleRoundedRect;
    textField1.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
    textField1.delegate = self;
    textField1.placeholder = @"Enter the Reminder name";
    [self.view addSubview:textField1];
    //datePicker&TextField2....................................................................................................



    datePicker=[[UIDatePicker alloc]initWithFrame:CGRectMake(0,210, self.view.frame.size.width, self.view.frame.size.height)]; 

    [datePicker addTarget:self action:@selector(actionDone) forControlEvents:UIControlEventValueChanged];


    [self.view addSubview:datePicker];
    [[NSNotificationCenter defaultCenter] postNotificationName:@"reloadData" object:self]; 





//UserDefaults.............................................................................................................

       NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
       remainder = [[NSMutableArray alloc]init];
       TimeDate = [[NSMutableArray alloc]init];

    if ([ud objectForKey:@"remainder"]) 
    {
        remainder = [[ud objectForKey:@"remainder"]mutableCopy];
        TimeDate = [[ud objectForKey:@"TimeDate"]mutableCopy];
    }



    //to make the fields visible when we try to edit it............................................................................

    if ([remainderr isEqualToString:@"edit"])
    {

        self.title = @"Reminder Edit";

        textField1.text = [remainder objectAtIndex:[index integerValue]];
        str = [TimeDate objectAtIndex:[index integerValue]];
    }
}

#pragma mark - doneClicked

//DoneButton.................................................................................................................

-(void)actionDone
{

    date = datePicker.date;
    NSDateFormatter *dateform=[[NSDateFormatter alloc]init];
    [datePicker setDate:[NSDate date]];
    dateform.dateFormat = @"dd-MM-YYYY HH:mm:SS";
    str=[dateform stringFromDate:date];
}



#pragma mark - AddRemainder Notifications

//addButton.................................................................................................................

-(void)addRemainder
{
    //LocalNotification.........................................................................................................
     notification = [[UILocalNotification alloc] init]; 
    notification.fireDate = date;
    notification.timeZone = [NSTimeZone defaultTimeZone];
    notification.soundName = UILocalNotificationDefaultSoundName;
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    //NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];

    if ([remainderr isEqualToString:@"edit"])
    {
        [remainder replaceObjectAtIndex:[index integerValue] withObject:textField1.text];
        [TimeDate replaceObjectAtIndex:[index integerValue] withObject: str];
        [self.navigationController popViewControllerAnimated:YES];
    }
    else if([remainderr isEqualToString:@"delete"])
    {
        [[UIApplication sharedApplication] cancelLocalNotification:notification];

    }
    else 
    {
        if((textField1.text!=NULL)&&( date!=NULL))
           {
        [remainder addObject:textField1.text];

        [TimeDate addObject: str];
        [self.navigationController popViewControllerAnimated:YES];
           }
        else
        {

            UIAlertView *myAlert = [[UIAlertView alloc]initWithTitle:@"Alert !" message:@"Please Give a title for your Remainder " delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
            [myAlert show];


        }
    } 


//Adding objects............................................................................................................


    //NSLog(@"%@   %@", remainder, TimeDate);

    [self.delegate store:remainder :TimeDate];

     NSLog(@"The notifications is \n %@",notification);





}



- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];

    return YES;   
}
@end

 ` 
Thank you.

2 个答案:

答案 0 :(得分:1)

已经对此进行了描述,请查看链接。 Delete a particular local notification

答案 1 :(得分:-1)

只需在代码中的一行后添加一行

即可
datePicker.datePickerMode = UIDatePickerModeDateAndTime;

将以下行添加到您的代码中并尝试

datePicker.date=[NSDate date];