单击按钮时UIDatePicker不显示

时间:2016-01-05 05:00:55

标签: ios objective-c iphone uidatepicker

enter image description here我有一个UIDatePicker,带有用于显示日期的标签和一个用于显示Datepicker的按钮。这是我第一次单击按钮时显示日期选择器但是在我设置了日期并单击之后完成按钮,datepicker被隐藏。然后,当我点击按钮显示datepicker时,它不会显示。 这是我的代码:

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

}

3 个答案:

答案 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;

}

答案 1 :(得分: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 =@"";
         }else{

             txtdob.text =@"";
             isDateSelected = NO;
         }

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

     }];

}

答案 2 :(得分:0)

您必须从代码中删除此语法,然后才能运行:

[self.datepicker removeFromSuperview];