【问题标题】:How to add a "Done" button with in the DatePicker Through StoryBoard?如何通过 StoryBoard 在 DatePicker 中添加“完成”按钮?
【发布时间】:2016-03-19 06:20:26
【问题描述】:

在我的应用程序中,我想在用户单击按钮时显示 UIDatePicker。然后将该日期保存到 UITextFiled。我做了这些事情。 我的问题是当日期选择器出现时没有完成按钮,如何添加完成按钮。 到现在我都试过了。

- (IBAction)pickerAction:(id)sender
{
datePicker.datePickerMode=UIDatePickerModeDate;
datePicker.hidden=NO;
datePicker.date=[NSDate date];
[datePicker addTarget:self action:@selector(TextTitle:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:datePicker];
NSDateFormatter * df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"M-d-yyyy"];
selectedDate.text=[df stringFromDate:datePicker.date];
} 

-(void)TextTitle:(id)sender
{
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"M-d-yyyy"];
selectedDate.text = [NSString stringWithFormat:@"%@",
                      [df stringFromDate:datePicker.date]];
 }

如何使用此代码添加完成按钮。 请帮帮我。

【问题讨论】:

标签: objective-c uitextfield uidatepicker


【解决方案1】:

答案是

datePicker=[[UIDatePicker alloc]init];
datePicker.datePickerMode=UIDatePickerModeDate;
[TextField1 setInputView:datePicker];

UIToolbar *toolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
[toolBar setTintColor:[UIColor grayColor]];
UIBarButtonItem *doneBtn=[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(ShowSelectedDate)];
UIBarButtonItem *space=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[toolBar setItems:[NSArray arrayWithObjects:space,doneBtn, nil]];

[TextField1 setInputAccessoryView:toolBar];

【讨论】:

  • 展示如何关闭日期选择器可能是个好主意。怎么样,TextField1.resignFirstResponder?我在下面注意到,人们如何创建精细的例程来为视图中的选取器设置动画。但是 resignFirstResponder 会为您执行此操作,假设 TextField1 将其 inputView 设置为选择器,如本例所示。
【解决方案2】:

我在我的 xib 中为“完成”按钮添加了一个带有 UIBarButtonItem 的 UIToolbar,并设置了框架,使其最初不可见(y 值等于父视图的高度)。

每次用户访问选择器时,我都会使用动画更改 UIDatePicker 和 UIToolbar 的框架(y 值),使其与选择器一起从屏幕底部向上滑动,类似于键盘。

在下面查看我的代码。

- (IBAction)showPicker
{
    if(pickerVisible == NO)
    {
        // create the picker and add it to the view
        if(self.datePicker == nil) self.datePicker = [[[UIDatePicker alloc] initWithFrame:CGRectMake(0, 460, 320, 216)] autorelease];
        [self.datePicker setMaximumDate:[NSDate date]];
        [self.datePicker setDatePickerMode:UIDatePickerModeDate];
        [self.datePicker setHidden:NO];
        [self.view addSubview:datePicker];

        // the UIToolbar is referenced 'using self.datePickerToolbar'
        [UIView beginAnimations:@"showDatepicker" context:nil];
        // animate for 0.3 secs.
        [UIView setAnimationDuration:0.3];

        CGRect datepickerToolbarFrame = self.datePickerToolbar.frame;
        datepickerToolbarFrame.origin.y -= (self.datePicker.frame.size.height + self.datePickerToolbar.frame.size.height);
        self.datePickerToolbar.frame = datepickerToolbarFrame;

        CGRect datepickerFrame = self.datePicker.frame;
        datepickerFrame.origin.y -= (self.datePicker.frame.size.height + self.datePickerToolbar.frame.size.height);
        self.datePicker.frame = datepickerFrame;

        [UIView commitAnimations];
        pickerVisible = YES;
    }
}

- (IBAction)done
{
    if(pickerVisible == YES)
    {
        [UIView beginAnimations:@"hideDatepicker" context:nil];
        [UIView setAnimationDuration:0.3];

        CGRect datepickerToolbarFrame = self.datePickerToolbar.frame;
        datepickerToolbarFrame.origin.y += (self.datePicker.frame.size.height + self.datePickerToolbar.frame.size.height);
        self.datePickerToolbar.frame = datepickerToolbarFrame;

        CGRect datepickerFrame = self.datePicker.frame;
        datepickerFrame.origin.y += (self.datePicker.frame.size.height + self.datePickerToolbar.frame.size.height);
        self.datePicker.frame = datepickerFrame;
        [UIView commitAnimations];

        // remove the picker after the animation is finished
        [self.datePicker performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.3];
    }
}

【讨论】:

    【解决方案3】:

    检查这个库。很容易实现。

    https://github.com/hackiftekhar/IQActionSheetPickerView

    【讨论】:

      【解决方案4】:

      转到下面的链接。

      http://www.iostute.com/2015/01/create-and-use-date-picker-uidatepicker.html

      我想它会帮助你。

      【讨论】:

      • UIDatePicker 教程
      【解决方案5】:

      您可以使用UIView 并在此UIView 添加您的DatepickerDone 按钮。完成按钮创建动作事件,在此您将处理您的UIView 隐藏和显示。 希望这会有所帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-22
        相关资源
        最近更新 更多