2012-09-26 32 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]; 
} 
相關問題