2012-08-24 16 views
5

enter image description hereUIDatePicker चयनित मूल्य गलत मामले में UIDatePicker

स्क्रॉल नहीं कर रहा था मैं जिसमें मैं UIDatePicker उपयोग कर रहा हूँ एक iPhone अनुप्रयोग बनाने रहा हूँ और एक actionsheet में समय का चयन किया दिखाती रहती है। कार्यपत्रक में समय 10 मिनट अंतराल के साथ प्रदर्शित होता है।

textfield मूल्य ठीक से सेट है जब मैं स्क्रॉल करते Datepicker

मैं स्क्रॉल कार्रवाई चादर तो चयन करें बटन पर प्रत्यक्ष क्लिक फिर पाठ फ़ील्ड वर्तमान समय निर्धारित नहीं कर हैं (11:56) लेकिन मैं एक्शन शीट (11:50) समय में चयन करता हूं। (textfield) गलत मान दिखाता है।

मैं textfield के मूल्य (11:50) को कैसे सेट कर सकता हूं। मुझे कुछ समाधान दो।

+0

आपके चयनित मूल्य NSLog है यानी youdatepicker.date –

+0

चुनें [12:30] और nslog 12:37 अगर मैं स्क्रॉल नहीं करता ....और यदि मैं तब स्क्रॉल करता हूं [सेल्सेट 12:30] .. nslog 12:30 –

उत्तर

1

संपादित करें अपनी कक्षा को अपने पिकर में UIControlEventValueChanged ईवेंट को संभालने के लिए बनाएं। इस लाइन viewDidLoad विधि जोड़ें या जब आपके actionsheet दिखाया गया है:

[picker addTarget:self action:@selector(dateChanged:) 
      forControlEvents:UIControlEventValueChanged]; 
तारीख है

अब चयनकर्ता जब तारीख

अद्यतन

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

बदल गया है विधि से ऊपर तो नहीं बुलाया जाता है कहा जाता है का मतलब है नहीं बदला गया है इसलिए हमेशा अपने टेक्स्ट फ़ील्ड में डिफ़ॉल्ट तिथि सेट करें। स्ट्रिंग वस्तु को


Convert तारीख

अद्यतन

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

अब सेट मूल्य इस तरह पाठ फ़ील्ड के लिए:

self.dateTextField.text = strdate; 
+0

मैं यह करता हूं .. जब मैं स्क्रॉल करता हूं तो यह सही काम करेगा। लेकिन इस मामले में जब मैं सीधे चुनिंदा बटन –

+1

पर टैप करता हूं तो आपका कोड काम नहीं कर रहा है :( –

1

बस के बाद अपने दिनांक पिकर से dateSelected सेट बटन दबाएं ....

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

मुझे लगता है कि सबसे आसान तरीका सिर्फ आपके टेक्स्टफिल्ड में किए गए बटन के साथ टूलबार संलग्न करना है जिसमें UIDatePicker को इनपुट इनपुट के रूप में देखा गया है। TextViewDidBeginEditing में इसका संदर्भ बनाए रखकर अपने वर्तमान टेक्स्टफ़ील्ड का ट्रैक रखें। तब किया बटन में कुछ इस तरह करते हैं:

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

मैं इस तरह से सही गलत है लेकिन नहीं जानता अपने मेरे लिए काम कर

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

मेरे अंतराल 30 मिनट

संबंधित मुद्दे