1

アプリにUIDatePickerがあり、シミュレーターで選択した日付を変更しましたが、NSLogを実行すると、選択したdatePicker.date日付ではなく現在の日付が出力されます。

これが私のコードの抜粋です:(ピッカーが生成される場所)

self.pickerView = [[UIDatePicker alloc] initWithFrame:pickerFrame];
//self.pickerView.frame = pickerFrame;

self.pickerView.datePickerMode = UIDatePickerModeDate;

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

[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

[actionSheet addSubview:pickerView];

UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Done"]];
closeButton.momentary = YES; 
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];

[closeButton addTarget:self action:@selector(dismissActionSheet) forControlEvents:UIControlEventValueChanged];

[pickerView addTarget:self action:@selector(pickerChange) forControlEvents:UIControlEventValueChanged];

[actionSheet addSubview:closeButton];
[actionSheet setBounds:CGRectMake(0, 0, 320, 251)];

pickerView.maximumDate = [NSDate dateWithTimeIntervalSinceNow:315360000];
pickerView.minimumDate = [NSDate dateWithTimeIntervalSinceNow:-315360000];

次に、私のpickerChange関数で:

-(void)pickerChange{
    NSLog(@"DEBUG: Picker Value Changed");
    NSLog(@"%@",self.pickerView.date );
}

そのNSLogの出力は、UIDatePickerで選択された日付ではなく、常に現在の日付です。理由はわかりません。私が知る限り、dateプロパティには、現在の日付(またはユーザーが値を変更する前に最初に選択されたもの)ではなく、選択されたものが表示されるはずです。

どんな助けでもいただければ幸いです。(さらに情報が必要な場合は私にメッセージを送ってください)。ありがとう!急いでいるうちに見落としていたものに違いないと思います。

4

2 に答える 2

2

Ok。私はなんとか答えを見つけることができました-他の誰かが同様の問題を抱えている場合、彼らがそれを修正できるように私はそれを投稿しています。

送信者を含めるようにpickerChange関数を変更する必要がありましたが、datePickerへの他のタイプの参照でも同じ効果があると予想されます。現在の外観は次のとおりです。

-(void)pickerChange:(UIDatePicker*) datePicker{
    myDate = datePicker.date;
}

'pickerView'(ヘッダーファイルで宣言されている)を参照するのではなく、これが問題を回避する唯一の方法であるように思われます。この方法で送信者を参照する必要があります。

他の誰かがこのタイプの問題(または同様の問題)に遭遇したかどうかを確認するのは興味深いでしょう。

于 2012-07-20T12:59:46.497 に答える
0

に変更UIControlEventValueChangedするとどうなりUIControlEventEditingDidEndますか?

于 2012-07-20T08:15:45.170 に答える