1

私はiPhone開発に不慣れです。UIDatePickerテキストフィールドが選択されているときに追加したい。2つの日付ピッカーがあります。

- (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)];
}

私はこれを使用しましたが、2つの異なる日付ピッカーに対して同じ値を取得しました。textfield1を押すと、datepickerが開き、その値がテキストフィールド1に保存され、2番目のテキストフィールドでも同じになります。ありがとう。

4

2 に答える 2

1

@Maulik:テキストフィールド- (void)textFieldDidBeginEditing:(UITextField *)aTextFieldが編集用に選択されるたびに、最初のものが呼び出されます。

したがって、選択したテキストフィールド1とテキストフィールド2の両方で、同じコードが呼び出されます。

完了ボタンをタップするだけで、ピッカーを開いたテキストフィールドを確認し、そのテキストフィールドに値を保存できます。

私が意味したのは、.hファイルのテキストフィールドを取ることです UITextField *selectedTextField;

次に、textFieldDidBeginEditingメソッドでそれを設定しselectedTextField = aTextField; 、完了ボタンをタップします。つまり、doneButtonPressedの選択した値を設定しますselectedTextField.text。そしてそれはそれです..あなたは完了です:)

于 2012-09-26T12:11:59.113 に答える
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];
}
于 2013-04-29T12:26:30.017 に答える