2010-06-09 10 views
5

मुझे UIDatePicker पर बहुत अजीब व्यवहार मिल रहा है। मेरे पास आईबीओलेट यूआईडीएटीपीकर * डेटपीकर के रूप में .h फ़ाइल में घोषित दिनांक पिकर के साथ एक दृश्य है; संपत्ति nonatomic और बनाए रखने के साथ। आईबी फाइल में डेटपीकर ठीक तरह से जुड़ा हुआ है।UIDatePicker दिनांक विधि गलत तिथि चुन रही है: आईफोन देव

कोड में मैं कम से कम, अधिकतम, प्रारंभिक तिथि और कार्रवाई की स्थापना कर रहा हूँ निम्नलिखित कोड

If (!currentDate) { 
    initialDate = [NSDate date]; 
} else { 
    initialDate = currentdate; 
} 

[datePicker setMinimumDate:[NSDate date]]; 
[datePicker setMaximumDate:[[NSDate date] addTimeInterval:5 * 365.25 * 24 * 60 * 60]]; // to get upto 5 years 
[datePicker setDate:initialDate animated:YES]; 

[datePicker addTarget:self action:@selector(getDatePickerValue:) forControlEvents:UIControlEventValueChanged]; 

का उपयोग कर UICOntrolEventValueChanged getDatePickerValue में के लिए कॉल करने के लिए, मैं datePicker.date का उपयोग कर नई तारीख मिलता है।

जब दृश्य बंद हो जाता है (एक पूर्ण बटन का उपयोग करके), मुझे datePicker.date का उपयोग कर दिनांक का वर्तमान मान मिलता है।

अब यदि दृश्य को 'चालू दिनांक' के साथ नहीं कहा जाता है, तो पिकर 'आज की तारीख' देता है। यह 'पिकर व्यू' कहलाता है 'पहला' समय होता है। प्रत्येक आगामी कॉल को देखने के लिए, 'वर्तमान दिनांक' के साथ मुझे आज से अलग और बाद की तारीख मिलती है। तो,

पहली बार मैं आज की तारीख मिल कहना 9 जून 2010
दूसरी बार datePicker.date रिटर्न 10 जून 2010
तीसरी बार 11 जून 2010 और इतने पर। हालांकि यह हमेशा वृद्धिशील नहीं है, लेकिन ज्यादातर यह है।

मैंने एनएसएलॉग लगाए हैं, और सत्यापित किया है कि आरंभिक तिथि सही ढंग से सेट की गई है।

समस्या केवल डिवाइस (ओएस 3.0 पर) पर है, समस्या सिम्युलेटर पर दोहराया नहीं गया है।

मुझे वह नहीं मिला जो मैंने गलत किया है। मुझे उम्मीद है कि कोई और इसी तरह की समस्या में आया है और इसे हल करने में मेरी मदद कर सकता है।

+0

आप नहीं के बराबर करने के लिए CURRENTDATE सेट करने के बाद आप इसकी ज़रूरत नहीं है की कोशिश की? – iwasrobbed

+0

मैं viewDidUnload() में वर्तमान डेटा को शून्य में सेट कर रहा हूं और इसे डेलोक में रिलीज़ कर रहा हूं। मैं नए 'currentdate' को वापस कॉलिंग व्यू पर पास करने के लिए प्रोटोकॉल विधि का उपयोग कर रहा हूं। – prd

उत्तर

5

समस्या आखिरकार हल हो गई है। लिस्टिंग क्या मेरे लिए समस्या हल हो गई है, इसलिए यदि किसी और ने वही समस्या का सामना करना पड़ता है कि वे इन चरणों का

मैं दो बातें
1. स्थान और datepicker का कैलेंडर स्थापित किया था की कोशिश कर सकते हैं -

NSLocale *locale = [NSLocale currentLocale]; 
[dateFormatter setLocale:locale]; 

self.datePicker.locale = locale; 
self.datePicker.calendar = [locale objectForKey:NSLocaleCalendar]; 

लेकिन इस अकेले समस्या को हल नहीं किया।
2. मैंने प्रत्येक संदर्भ से पहले 'स्वयं' को तारीख पर रखा है, यानी सभी दिनांक पिकर को self.datePicker से बदल दिया गया है। इसने संकलक सेटर्स और गेटर्स को बुलाया होगा।

मुझे पूरी तरह से समझ में नहीं आ रहा है कि क्यों 'स्वयं' का उपयोग नहीं करना इतना अजीब व्यवहार करता है। लेकिन हाँ, मैं अपने चर के लिए सही सेटर्स का उपयोग करने के साथ और अधिक सावधान रहूंगा।

मेरी समस्या को देखने में समय लेने के लिए धन्यवाद।

+0

एक ही समस्या थी और यह मेरे लिए भी तय किया गया। साझा करने के लिए धन्यवाद ! –

3
IBOUTLET UIDatePicker *datePicker; 
IBOUTLET UILabel *label; 
} 
-(void)click:(id)sender; 


- (void)viewDidLoad { 

    [super viewDidLoad]; 
    NSDate *dateFromPicker = [[NSDate alloc]init]; 
    [date setDate:dat animated:YES]; 
} 
-(void)click:(id)sender { 

    NSDate *selectDate = [datePicker date]; 
    NSString *dateString = [NSString stringWithFormat:@"%@",selectDate]; 

    [label setText:dateString]; 
} 

इस काम करेंगे,

+3

आपके यूआईडीएटीपीकर "डेट" का नामकरण और आपका एनएसडीएटी "डेटा" इस कोड को पढ़ने के लिए बहुत कठिन बनाता है। – AndrewCr

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