【问题标题】:UIDatePicker not showing when I click the button当我单击按钮时,UIDatePicker 不显示
【发布时间】:2016-01-05 20:34:29
【问题描述】:

enter image description here我有一个 UIDatePicker,带有一个用于显示日期的标签和一个用于显示 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];

}

【问题讨论】:

  • 你在哪里使用 'HidePicker:' 方法?
  • 在 -(IBAction)HidePicker:(id)sender 方法中,您已删除 piker 表单超级视图,这就是您面临问题的原因
  • 如果按钮被删除一次,点击后如何恢复视图?
  • [datepicker removeFromSuperview]; 它将从视图中删除日期选择器,因此您必须创建新实例并再次添加到视图中。但是为什么要删除它意味着只隐藏
  • 请使用 self.datepicker.hidden = YES;而不是 [datepicker removeFromSuperview];

标签: ios objective-c iphone uidatepicker


【解决方案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;

}

【讨论】:

    【解决方案2】:

    你必须从你的代码中删除这个语法,然后它才会起作用:

    [self.datepicker removeFromSuperview];

    【讨论】:

      【解决方案3】:
      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];
      
           }];
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-19
        • 2012-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-01
        • 2022-01-05
        • 1970-01-01
        相关资源
        最近更新 更多