0
votes

I am implementing UIDATEPICKER. The problem is that when i click on the button, The alert sheet is appear and datepicker is add as subview but i want two button,

1-cancel 2-done

what will i do?

UIActionSheet *aac = [[UIActionSheet alloc] initWithTitle:@"How many?" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];

aac.actionSheetStyle = UIActionSheetStyleBlackOpaque;

sheet = aac;
UIDatePicker *theDatePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0.0, 44.0, 0.0, 0.0)];
if(IsDateSelected==YES)
{
    theDatePicker.datePickerMode = UIDatePickerModeDate;
    theDatePicker.maximumDate=[NSDate date];
}else {
    theDatePicker.datePickerMode = UIDatePickerModeTime;
}

self.dtpicker = theDatePicker;
[theDatePicker release];
[dtpicker addTarget:self action:@selector(dateChanged) forControlEvents:UIControlEventValueChanged];

pickerDateToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
pickerDateToolbar.barStyle = UIBarStyleBlackOpaque;
[pickerDateToolbar sizeToFit];

NSMutableArray *barItems = [[NSMutableArray alloc] init];

UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:self action:nil];
[barItems addObject:flexSpace];

UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(DatePickerCancelClick)];
[barItems addObject:cancelBtn];

//// it doesnot work ..I want this....enter image description here

what will i do?

2
Hi, As far as i understood your issue, try n present the datepicker using UIView animation effect with some delay and duration, the same logic applies to the tool bar, make sure they appear at the same time... let me know if i understood right. ThanksGina

2 Answers

2
votes
-(IBAction)DatePickerView
{
   iRolegameAppDelegate *appDelegate = (iRolegameAppDelegate *)[[UIApplication sharedApplication]delegate];

 pickerViewDate = [[UIActionSheet alloc] initWithTitle:@"How many?"
                                                delegate:self
                                       cancelButtonTitle:nil
                                  destructiveButtonTitle:nil
                                       otherButtonTitles:nil];

   theDatePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0.0, 44.0, 0.0, 0.0)];
   theDatePicker.datePickerMode = UIDatePickerModeDateAndTime;

   NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
   [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
   [dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]autorelease]];
     [dateFormatter setDateFormat:@"MM/dd/YY h:mm a"];
   [theDatePicker addTarget:self action:@selector(dateChanged) forControlEvents:UIControlEventValueChanged];


   pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
   pickerToolbar.barStyle=UIBarStyleBlackOpaque;
   [pickerToolbar sizeToFit];   



   NSMutableArray *barItems = [[NSMutableArray alloc] init];   
   UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(DatePickerDoneClick)];
   [barItems addObject:flexSpace];


   UIBarButtonItem *spacer = [[UIBarButtonItem alloc]
                              initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                              target:nil
                              action:nil];
   [barItems addObject:spacer];




   UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(DatePickerCancelClick)];
   [barItems addObject:cancelBtn];


   [pickerToolbar setItems:barItems animated:YES];       
   [pickerViewDate addSubview:pickerToolbar];
   [pickerViewDate addSubview:theDatePicker];
   [pickerViewDate  showInView:self.view];
   [pickerViewDate setBounds:CGRectMake(0,0,320, 464)];
   NSDateFormatter *currentdateformate = [[NSDateFormatter alloc] init];
   [currentdateformate setDateFormat:@"HH:MM, EEEE, dd-MMMM-yyyy"];
   appDelegate.timestamp1 = [currentdateformate stringFromDate:[theDatePicker date]];


   NSDateFormatter *currentdateformate1 = [[NSDateFormatter alloc] init];
   [currentdateformate1 setDateFormat:@"MMM dd, yyyy HH:mm"];
   self.updatedate = [currentdateformate1 stringFromDate:[theDatePicker date]];
}

-(IBAction)dateChanged{
   iRolegameAppDelegate *appDelegate = (iRolegameAppDelegate *)[[UIApplication sharedApplication]delegate];

   NSDateFormatter *currentdateformate = [[NSDateFormatter alloc] init];
   [currentdateformate setDateFormat:@"HH:MM, EEEE, dd-MMMM-yyyy"];

   appDelegate.timestamp1 = [currentdateformate stringFromDate:[theDatePicker date]];
   NSLog(@"%@",appDelegate.timestamp1);
   [currentdateformate setDateFormat:@"MMM dd, yyyy HH:mm"];
   self.updatedate = [currentdateformate stringFromDate:[theDatePicker date]];

}
-(void)DatePickerCancelClick
{
   self.pickerViewDate.hidden = YES;
   self.view.hidden = NO;
   [self.pickerViewDate dismissWithClickedButtonIndex:0 animated:YES];

}

-(BOOL)closeDatePicker:(id)sender{   
   //iRolegameAppDelegate *appDelegate = (iRolegameAppDelegate *)[[UIApplication sharedApplication]delegate];

   [pickerViewDate dismissWithClickedButtonIndex:0 animated:YES];
   [pickerToolbar release];
   [pickerViewDate release];
   //[SelectedTextField resignFirstResponder];   

   if([ self.updatedate isEqualToString:@"nil"]){
       NSDateFormatter *currentdateformate = [[NSDateFormatter alloc] init];
       [currentdateformate setDateFormat:@"MMM dd, yyyy HH:mm"];
       self.updatedate = [currentdateformate stringFromDate:[theDatePicker date]];
        [dateSelectButton setTitle:self.updatedate forState:UIControlStateNormal];
        self.updatedate = @"";
   }
   else{
       [dateSelectButton setTitle:self.updatedate forState:UIControlStateNormal];
        self.updatedate = @"";
   }

   return YES;
}

-(IBAction)DatePickerDoneClick{   
   [self closeDatePicker:self];


}
0
votes

maybe you should get rid of the UIActionSheet and do it like I did for another question.

UIDatePicker pop up after UIButton is pressed