当用户点击文本字段时,会显示日期选择器

时间:2013-08-05 02:02:30

标签: iphone objective-c datepicker

我试着关注这篇文章Display datepicker on tapping on textfield,当我说到“在XIB中,拉出一个UIToolbar和一个UIDatePicker但不将它附加到视图”时,我迷路了。我正在使用故事板,他正在使用xib。那是问题吗? xib不是我的选择。那么有没有办法拖出日期选择器,但没有附加到视图?

3 个答案:

答案 0 :(得分:0)

与故事板的区别在于您将为每个视图使用XIB文件(也称为NIB)。 但是你应该能够遵循任何指示。

  

在XIB中,拉出UIToolbar和UIDatePicker,但不要附加   它的观点。

我相信他的意思是不要像使用按钮那样连接到ViewController(例如IBAction)

由于您在点击文本字段时显示,因此您必须以编程方式执行此操作。

您无需将其添加到视图中。

答案 1 :(得分:0)

您可以创建一个viewcontroller,其底部有一个日期选择器,顶部有一个关闭按钮。 点击文本字段时,您可以以模态方式显示该视图控制器。

将委托方法设置为viewcontroller: closeButtonClicked:和dateSelected :, 并在主控制器中实现这些委托merhod。

此外,你可以"阻止"通过添加具有特定alpha的datePicker的viewcontroller背景颜色来获得良好的效果。

我发现这是最简单的方法。不需要笔尖

答案 2 :(得分:0)

可能会对你有所帮助..

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
        dateActionSheet = [[UIActionSheet alloc]initWithTitle:@"Select Your Date of Birth" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil  , nil];
            dateActionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;

            UIDatePicker *datePicker = [[UIDatePicker alloc] init];
            datePicker.datePickerMode = UIDatePickerModeDate;
            [datePicker addTarget:self action:@selector(datePickerValueChangedd:) forControlEvents:UIControlEventValueChanged ];
            NSDateFormatter *df = [[NSDateFormatter alloc] init];
            df.dateStyle = NSDateFormatterMediumStyle;

            [dateActionSheet addSubview:datePicker];
            [dateActionSheet addSubview:self.datePickerView];

            UIToolbar *tools=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0,320,40)];
            tools.barStyle=UIBarStyleBlackOpaque;
            [dateActionSheet addSubview:tools];


            UIBarButtonItem *doneButton=[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(btnActinDoneClicked)];
            doneButton.imageInsets=UIEdgeInsetsMake(200, 6, 50, 25);


            UIBarButtonItem *flexSpace= [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

            NSArray *array = [[NSArray alloc]initWithObjects:flexSpace,flexSpace,doneButton,nil];

            [tools setItems:array];



            //picker title
            UILabel *lblPickerTitle=[[UILabel alloc]initWithFrame:CGRectMake(60,8, 200, 25)];
            lblPickerTitle.text=@"Select Date of Birth";
            lblPickerTitle.backgroundColor=[UIColor clearColor];
            lblPickerTitle.textColor=[UIColor whiteColor];
            lblPickerTitle.textAlignment = NSTextAlignmentCenter;
            lblPickerTitle.font=[UIFont boldSystemFontOfSize:15];
            [tools addSubview:lblPickerTitle];


            //cell.detailTextLabel.text = [self datePickerValueChangedd:datePicker];

            [dateActionSheet showFromRect:CGRectMake(0,480, 320,215) inView:self.view animated:YES];
            [dateActionSheet setBounds:CGRectMake(0,0, 320, 411)];
        }

    -(void)btnActinDoneClicked {
        [dateActionSheet dismissWithClickedButtonIndex:1 animated:YES];
        [dateActionSheet removeFromSuperview];

    }

    -(void)datePickerValueChangedd:(UIDatePicker*) datePicker
    { 
        Youytextfield.text = (NSString *)datePicker.date;
    }