首页 文章

单击按钮时UIDatePicker不显示

提问于
浏览
1

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

    解决了 :

    #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

    您必须从代码中删除此语法,然后它才会起作用:

    [self.datepicker removeFromSuperview];

  • 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];
    
         }];
    
    }
    

相关问题