2012-09-26 34 views
1

我是iPhone开发新手。选择文本字段时,我想添加UIDatePicker。 两个日期选择器在那里。在iOS应用程序中的日期选择器

- (void)textFieldDidBeginEditing:(UITextField *)aTextField 
{ 

    [aTextField resignFirstResponder]; 

    pickerViewPopup = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 

    UIDatePicker *pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 44, 0, 0)]; 
    pickerView.datePickerMode = UIDatePickerModeDate; 
    pickerView.hidden = NO; 
    pickerView.date = [NSDate date]; 

    UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
    pickerToolbar.barStyle = UIBarStyleBlackOpaque; 
    [pickerToolbar sizeToFit]; 

    NSMutableArray *barItems = [[NSMutableArray alloc] init]; 

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

    UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)]; 
    [barItems addObject:doneBtn]; 

    UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonPressed:)]; 
    [barItems addObject:cancelBtn]; 

    [pickerToolbar setItems:barItems animated:YES]; 

    [pickerViewPopup addSubview:pickerToolbar]; 
    [pickerViewPopup addSubview:pickerView]; 
    [pickerViewPopup showInView:self.view]; 
    [pickerViewPopup setBounds:CGRectMake(0,0,320, 464)]; 
} 

我用这个,但得到了两个不同的日期选择器相同的值。我想,如果我按textfield1然后datepicker打开并保存该值的文本字段之一和第二个文本相同。谢谢。

回答

1

@Maulik: 第一件事- (void)textFieldDidBeginEditing:(UITextField *)aTextField在每次选择文本字段进行编辑时被调用。

因此,对于您的选择,即textfield1和textfield2将被调用相同的代码。

你可以做的是在完成按钮的敲击下,检查哪个文本框打开了选择器并将该值保存在该文本框中。

我的意思是采取一个文本框在.h文件中 UITextField *selectedTextField;

然后在textFieldDidBeginEditing方法将其设置为selectedTextField = aTextField; ,并在完成按钮即在doneButtonPressed的水龙头selectedTextField.text设置选定的值。这就是它..你已经完成:)

+0

谢谢你的回答,但我仍然无法做到这一点..请检查该代码 - (void)doneButtonPressed:(id)sender { //在这里做一些事情,用[picke rView date]获取该值 [pickerViewPopup dismissWithClickedButtonIndex:1 animated:YES]; } - (无效)cancelButtonPressed:(ID)发送方 { [pickerViewPopup dismissWithClickedButtonIndex:1动画:YES]; } –

+0

@MaulikVekariya检查出我在这篇文章中的答案http://stackoverflow.com/questions/3624013/adding-a-button-to-uidatepicker/3624329#3624329 –

+0

仍然我没有得到ny输出我得到那个当我触摸textfield1然后datepicker打开这是最好的,但是当我选择日期,然后按完成,然后在textfield1和textfield2中打印thi s值我都希望这两个值sepretely..plz帮助我bhai ... –

1

我有一个简单的解决方案。

集委托<UIPickerViewDelegate,UIPickerViewDataSource>

.h文件:

UIDatePicker *dtPicker; 
UIActionSheet *pickerViewPopup; 

-(IBAction)dt_picker:(id)sender; 

.m文件:

-(IBAction)dt_picker:(id)sender{ 

    pickerViewPopup = [[UIActionSheet alloc] init]; 
    const CGFloat toolbarHeight = 44.0f; 
    dtPicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, toolbarHeight, 0, 0)]; 

    NSDateFormatter *dateFormatter =[[NSDateFormatter alloc] init]; 
    // if (dateStatus==0) { 
     dtPicker.datePickerMode = UIDatePickerModeDate; 
     [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
     [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
     dtPicker.minimumDate = [NSDate date]; 
    /* }else{ 
     datePicker.datePickerMode = UIDatePickerModeTime; 
     [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
     [dateFormatter setDateFormat:@"HH:mm:ss"]; 

    }*/ 
    dtPicker.hidden = NO; 
    dtPicker.date = [NSDate date]; 

    [dtPicker addTarget:self action:@selector(LabelChange:) forControlEvents:UIControlEventValueChanged]; 
    UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, toolbarHeight)]; 
    pickerToolbar.barStyle = UIBarStyleBlackOpaque; 
    [pickerToolbar sizeToFit]; 
    NSMutableArray *barItems = [[NSMutableArray alloc] init]; 

    UIBarButtonItem *btnCancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(btncancelPressed:)]; 
    [barItems addObject:btnCancel]; 

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

    flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
    [barItems addObject:flexSpace]; 

    UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)]; 
    [barItems addObject:doneBtn]; 


    lbl1.text=[NSString stringWithFormat:@"%@",dtPicker.date]; 


    [pickerToolbar setItems:barItems animated:YES]; 

    [pickerViewPopup addSubview:pickerToolbar]; 
    [pickerViewPopup addSubview:dtPicker]; 
    [pickerViewPopup showInView:self.view.superview]; 
    [pickerViewPopup setBounds:CGRectMake(0,0,self.view.frame.size.width, 464)]; 

} 


-(void)LabelChange:(id)sender{ 

    NSDateFormatter* formatter1 = [[NSDateFormatter alloc] init]; 
    [formatter1 setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
    [formatter1 setDateFormat:@"yyyy-MM-dd"]; 

    NSString *dateString= [formatter1 stringFromDate:dtPicker.date]; 
    lbl1.text=dateString; 
} 

-(void)btncancelPressed:(id)sender{ 
    [pickerViewPopup dismissWithClickedButtonIndex:1 animated:YES]; 
} 

-(void)doneButtonPressed:(id)sender{ 
    [pickerViewPopup dismissWithClickedButtonIndex:1 animated:YES]; 
} 
相关问题