2016-01-05 7 views
1

enter image description here У меня есть UIDatePicker с меткой для отображения даты и кнопки для отображения Datepicker. В первый раз, когда я нажимаю кнопку, она показывает дату, но и после того, как я установил кнопка даты и нажатия кнопки, datepicker скрыта. Затем, когда я нажимаю кнопку для показа даты, вы не видите ее. Это мой код:UIDatePicker не отображается, когда я нажимаю кнопку

#import "ViewController.h" 

@interface ViewController() 

@property (strong, nonatomic) IBOutlet UIDatePicker *datepicker; 
@property (strong, nonatomic) IBOutlet UIButton *btnDone; 
@property (strong, nonatomic) IBOutlet UILabel *selectedDate; 
@property (strong, nonatomic) IBOutlet UIToolbar *toolBar; 

@end 

@implementation ViewController 
@synthesize btnDone,datepicker; 

- (void)viewDidLoad { 

    self.datepicker.hidden = YES; 
    self.toolBar.hidden = YES; 

    [self.datepicker addTarget:self action:@selector(datePickerChanged:) forControlEvents:UIControlEventValueChanged]; 
} 

- (void)datePickerChanged:(UIDatePicker *)datePicker 
{ 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm"]; 
    NSString *strDate = [dateFormatter stringFromDate:datePicker.date]; 
    self.selectedDate.text = strDate; 

} 

- (void)didReceiveMemoryWarning 
{ 

    [super didReceiveMemoryWarning]; 
     // Dispose of any resources that can be recreated. 

} 

- (IBAction)show:(id)sender 
{ 
    [UIView animateWithDuration:0.5 
          delay:0.1 
         options: UIViewAnimationOptionCurveEaseIn 
         animations:^{ 

         self.datepicker.hidden = NO; 
         self.toolBar.hidden = NO; 


       } 
       completion:^(BOOL finished){ 

       }]; 


    self.datepicker.hidden = NO; 
    self.toolBar.hidden = NO; 


} 


-(IBAction)HidePicker:(id)sender{ 
    [UIView animateWithDuration:0.5 
        animations:^{ 
         datepicker.frame = CGRectMake(0, -250, 320, 50); 
        } completion:^(BOOL finished) { 
         [datepicker removeFromSuperview]; 
         [btnDone removeFromSuperview]; 
         [_toolBar removeFromSuperview]; 
       }]; 

[self.datepicker removeFromSuperview]; 

} 
+0

Где вы используете метод «HidePicker:»? –

+0

in - (IBAction) HidePicker: (id) метод отправителя, вы удалили вид надстройки piker, и почему вы столкнулись с проблемой –

+0

, как вернуть представление после нажатия кнопки, если она была удалена один раз? –

ответ

1

Решено:

#import "ViewController.h" 

@interface ViewController() 

@property (strong, nonatomic) IBOutlet UIDatePicker *datepicker; 
@property (strong, nonatomic) IBOutlet UIButton *btnDone; 
@property (strong, nonatomic) IBOutlet UILabel *selectedDate; 
@property (strong, nonatomic) IBOutlet UIToolbar *toolBar; 

@end 

@implementation ViewController 
@synthesize btnDone,datepicker; 

- (void)viewDidLoad { 


    self.datepicker.hidden = YES; 
    self.toolBar.hidden = YES; 
    [self.datepicker addTarget:self action:@selector(datePickerChanged:) forControlEvents:UIControlEventValueChanged]; 

} 

- (void)datePickerChanged:(UIDatePicker *)datePicker 
{ 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
    NSString *strDate = [dateFormatter stringFromDate:datepicker.date]; 
    self.selectedDate.text = strDate; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
     // Dispose of any resources that can be recreated. 
} 

- (IBAction)show:(id)sender 
{ 
    [self.view addSubview:datepicker]; 
    self.toolBar.hidden = NO; 
    self.datepicker.hidden = NO; 
    self.btnDone.hidden=NO; 
} 


-(IBAction)HidePicker:(id)sender 
{ 

    self.datepicker.hidden = YES; 
    self.toolBar.hidden = YES; 
    self.btnDone.hidden=YES; 

} 
0
IBOutlet UIButton  *btnDateSelect; 

IBOutlet UIView   *vwMainDatePicker; 

IBOutlet UIView   *vwMainPicker; 


-(IBAction)dateshowPicker:(id)sender 
{ 
    [self textResingFirstResponder]; 


    [viewDatePicker setBackgroundColor:viewBackgroundColor]; 

    viewDatePicker.frame = CGRectMake(0, -viewDatePicker.frame.size.height, self.view.frame.size.width, viewDatePicker.frame.size.height); 
    [[[[UIApplication sharedApplication] delegate] window] addSubview:vwMainDatePicker]; 

    vwMainDatePicker.frame = [[[UIApplication sharedApplication] delegate] window].frame; 


    [UIView animateWithDuration:0.5 delay:0 options:0 animations:^{ 

     [scroll setScrollEnabled:NO]; 


      // vwDate.frame = CGRectMake(self.view.frame.origin.x, 
     self.view.center.y-self.view.frame.size.height/3 

      //  , self.view.frame.size.width, 205); 
     viewDatePicker.center = CGPointMake(vwMainDatePicker.frame.size.width/2, 

              vwMainDatePicker.frame.size.height/2); 

    }completion:^(BOOL finished) 
    { 

     NSLog(@"Animation is complete"); 
    }]; 
} 
- (IBAction)doneDatePickerBtnPressed:(id)sender 
{ 

    [UIView animateWithDuration:0.5 animations:^{ 
     viewDatePicker.frame = CGRectMake(0, -viewDatePicker.frame.size.height, self.view.frame.size.width, viewDatePicker.frame.size.height); 

    } completion:^(BOOL finished) 
    { 
     NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
     [df setDateFormat:@"dd-MM-yyyy"]; 
     NSString *datetSelected = [df stringFromDate:datePicker.date]; 
     txtdob.text = datetSelected; 
     isDateSelected = YES; 
     [vwMainDatePicker removeFromSuperview]; 
     [scroll setScrollEnabled:YES]; 

     [scroll setUserInteractionEnabled:true]; 
    }]; 
} 
- (IBAction)cancelDatePickerBtnPressed:(id)sender 
{ 

    [UIView animateWithDuration:0.5 delay:0 options:0 animations:^{ 
     viewDatePicker.frame = CGRectMake(0, -viewDatePicker.frame.size.height, self.view.frame.size.width, viewDatePicker.frame.size.height); 
    }completion:^(BOOL finished) 
    { 
     NSLog(@"Animation is complete"); 
     NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
     [df setDateFormat:@"dd-MM-yyyy"]; 

     if (isDateSelected) 
     { 
      // txtdob.text [email protected]""; 
     }else{ 

      txtdob.text [email protected]""; 
      isDateSelected = NO; 
     } 

     [vwMainDatePicker removeFromSuperview]; 
     [scroll setScrollEnabled:YES]; 

    }]; 

} 
0

Вы должны удалить этот синтаксис из кода, то он будет работать:

[self.datepicker removeFromSuperview];

Смежные вопросы