0

UIDatePickerView は正常に動作しています。表示され、日付をスクロールできますが、何らかの理由で、選択したOB.textが今日の日付として表示され続けます! どの日付を選択しても、今日の日付として表示されます。

私はこれを選択します: ここに画像の説明を入力

NSLog とラベルは次のように表示されます。 ここに画像の説明を入力

コードは次のとおりです。

- (IBAction)selectDOB:(id)sender 
{
    UIActionSheet *selectBirthMY = [[UIActionSheet alloc] initWithTitle:@"Select Date of Birth" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Select", nil];
    [selectBirthMY setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
    [selectBirthMY showInView:[UIApplication sharedApplication].keyWindow];
    [selectBirthMY setFrame:CGRectMake(0, 100, 320, 500)];
}

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
{
    UIDatePicker *pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 40, 320, 216)];
    pickerView.datePickerMode = UIDatePickerModeDate;

    [pickerView setMinuteInterval:15];
    //Add picker to action sheet
    [actionSheet addSubview:pickerView];
    //Gets an array af all of the subviews of our actionSheet

    NSArray *subviews = [actionSheet subviews];
    [[subviews objectAtIndex:1] setFrame:CGRectMake(20, 265, 280, 46)];
    [[subviews objectAtIndex:2] setFrame:CGRectMake(20, 317, 280, 46)];
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    UIDatePicker *DOBPicker = [[UIDatePicker alloc] init];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"MMMM dd, YYYY"];

    NSDate *pickedDOB = [DOBPicker date];
    NSString *DOB = [dateFormatter stringFromDate:pickedDOB];
    NSLog (@"This is DOB %@", DOB);
    self.selectedDOB.text=DOB;
}
4

2 に答える 2

2

UIDatePicker の 2 つの異なるインスタンスを使用しています。選択した日付を取得するには、datePicker の同じインスタンスを使用する必要があります

datePicker のプロパティを作成する

@property (nonatomic, strong) UIDatePicker *pickerView;

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
{
    if(!self.pickerView){
        self.pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 40, 320, 216)];
        self.pickerView.datePickerMode = UIDatePickerModeDate;

        [self.pickerView setMinuteInterval:15];
        //Add picker to action sheet
        [actionSheet addSubview:self.pickerView];
    }

    //Gets an array af all of the subviews of our actionSheet

    NSArray *subviews = [actionSheet subviews];
    [[subviews objectAtIndex:1] setFrame:CGRectMake(20, 265, 280, 46)];
    [[subviews objectAtIndex:2] setFrame:CGRectMake(20, 317, 280, 46)];
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"MMMM dd, YYYY"];

    NSDate *pickedDOB = [self.pickerView date];
    NSString *DOB = [dateFormatter stringFromDate:pickedDOB];
    NSLog (@"This is DOB %@", DOB);
    self.selectedDOB.text=DOB;
}
于 2013-05-03T20:04:06.073 に答える