2012-08-24 3 views
5

enter image description hereUIDatePicker gewählter Wert ist falsch, falls UIDatePicker nicht

I App machte ein iPhone gescrollt wurde, in dem ich UIDatePicker verwende und Anzeigen der Zeit in einem actionsheet ausgewählt. Im Aktionsblatt wird die Zeit mit einem 10-Minuten-Intervall angezeigt.

textfield Wert richtig eingestellt ist, wenn ich die Datepicker

blättere Wenn ich nicht Scroll-Blatt die Aktion tun dann direkt Klick auf Select-Taste dann die aktuelle Uhrzeit einstellen Textfeld (11:56) aber ich wähle im Aktionsblatt (11:50) mal. (textfield) zeigt den falschen Wert an. Wie kann ich den Wert textfield (11:50) einstellen? Gib mir eine Lösung.

+0

NSLog Ihren gewählten Wertes dh youdatepicker.date –

+0

wähle [12:30] und nslog 12:37 wenn ich nicht scrolle ....und wenn ich scrolle dann [selcet 12:30] .. nslog 12:30 –

Antwort

1

BEARBEITEN Sorgen Sie dafür, dass Ihre Klasse das Ereignis UIControlEventValueChanged in Ihrem Picker behandelt. Fügen Sie diese Zeile ViewDidLoad Methode oder wenn Ihr actionsheet gezeigt:

[picker addTarget:self action:@selector(dateChanged:) 
      forControlEvents:UIControlEventValueChanged]; 

Nun würde Wähler aufgerufen werden, wenn Datum

geändert wird

UPDATE

- (void) dateChanged:(id)sender{ 
    // handle date changes and set in textField 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    NSString *strdate = [dateFormatter stringFromDate:self.datePicker.date]; //provide your selected date here 
    self.dateTexField.text = strdate; 
} 

Wenn obige Verfahren nicht bedeutet, genannt Datum ist nicht geändert, also immer das Standarddatum in Ihrem Textfeld festlegen.


Convert Datum String-Objekt

UPDATE

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSString *strdate = [dateFormatter stringFromDate:self.datePicker.date]; //provide your selected date here 

Sie nun Wert wie folgt TextField-:

self.dateTextField.text = strdate; 
+0

ich mache das .. das wird funktionieren, wenn ich scroll. aber nicht in dem Fall, wenn ich direkt auf den Select-Button –

+1

nicht funktioniert ur Code :( –

1

einfach die dateSelected von Ihrer Datumsauswahl gesetzt, nachdem Wählen Sie die Taste drücken ....

NSDate *date = datePicker.date; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd/MM/yyyy"];  
NSString *dateString = [formatter stringFromDate:date]; 
yourTxtField.text = dateString; 
0

Ich denke, der einfachste Weg, nur eine Symbolleiste mit einem getan Schaltfläche, um Ihr Textfeld zuzuordnen ist, der die UIDatePicker als inputView hat. Verfolgen Sie Ihr aktuelles TextField, indem Sie in TextViewDidBeginEditing einen Verweis darauf beibehalten. Dann in der getan Taste etwas tun:

if (_currentTextField == _myTextFieldThatUsesADatePicker) { 
    self.myDateProperty = _myDatePicker.date; 
} 
0

Ich weiß nicht, auf diese Weise richtig falsch, aber sein für mich arbeitet

-(void)selectedTime{ 
    NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; 
// [outputFormatter setDateFormat:@"h:mm a"]; 
    [outputFormatter setDateFormat:@"HH:mm:ss"]; 
    selectedTime = [outputFormatter stringFromDate:datePicker.date]; 
    NSArray *temp=[selectedTime componentsSeparatedByString:@":"]; 
    NSLog(@"%@",temp); 
    NSInteger mins=[[temp objectAtIndex:1]integerValue]; 
    //check your interval here 
    if (mins<=29) { 
     selectedTime=[NSString stringWithFormat:@"%@:%@:%@",[temp objectAtIndex:0],@"00",@"00"]; 
    }else if (mins>=31 && mins<=59){ 
     selectedTime=[NSString stringWithFormat:@"%@:%@:%@",[temp objectAtIndex:0],@"30",@"00"]; 
    }else{ 
//  selectedTime = [outputFormatter stringFromDate:datePicker.date]; 
    } 
    if (self.delegate && [self.delegate respondsToSelector:@selector(SelectedValue:)]) { 
     [self.delegate SelectedValue:selectedTime]; 
    } 
    [self.popupController dismiss]; 
} 

Mein Intervall ist 30 Minuten