2009-07-06 16 views
9

पर लैंडस्केप में एक UIDatePicker लोड हो रहा है मेरे पास एक कस्टम UINavigationController है जो ऑटो-रोटेट का समर्थन करता है। मेरे पास मेरे विचारों में से एक पर UIDatePicker भी है जो मैंने नेविगेशन नियंत्रक के ढेर पर फेंक दिया है। ऑटो-रोटेट काम करता है अगर मैं पोर्ट्रेट में डेट पिकर व्यू शुरू करता हूं और फिर इसे घुमाता हूं। यदि मैं शुरू करने के लिए परिदृश्य में दिनांक पिकर दृश्य लोड करने का प्रयास करता हूं, तो दृश्य सभी गड़बड़ हो जाता है। ऐसा लगता है कि अगर यह रोटेशन का समर्थन नहीं करता है और फ्रेम में केवल पिकर दृश्यमान और ऑफ सेंटर का आधा हिस्सा होता है।एक UINavigationController

मैंने अपनी खुद की डेट पिकर बनाने की कोशिश की है जो समस्या के मामले में ऑटो-रोटेट का समर्थन करता है, मैंने दो अलग-अलग विचार बनाने और उन्हें स्वैप करने का प्रयास किया है, और मैंने दृश्य फ्रेम आकार को बदलने की कोशिश की है ViewWillAppear विधि। ऐसा लगता है कि उनमें से कोई भी मेरे लिए अभी तक काम नहीं कर रहा है।

किसी को भी नेविगेशन नियंत्रक पर सही ढंग से परिदृश्य में दिखाने के लिए दिनांक पिकर कैसे प्राप्त करें इस पर कोई सुझाव है? मैं शायद कुछ सरल दिख रहा हूं और जवाब मेरे सामने सही है, लेकिन मुझे यह नहीं मिल रहा है।

उत्तर

0

ठीक है मैंने इसे ठीक किया है। मैं यह देखने के लिए एक जांच करने में कामयाब रहा कि अभिविन्यास क्या था, और फिर दिनांक पिकर को हटा दें और कोड में, मैंने डेट पिकर को फिर से बनाया और इसे जोड़ा। यह काम किया, यह सुंदर नहीं था, लेकिन यह काम किया।

+1

जाहिरा यह ठीक से प्रस्तुत नहीं होता तो डिवाइस जब दृश्य नियंत्रक निब से भरी हुई है लैंडस्केप ओरिएंटेशन में पहले से ही है। तो नियंत्रण को फिर से बनाने के लिए आपका फिक्स समझ में आता है, लेकिन मुझे एक अच्छा फिक्स मिला, मेरा जवाब देखें। – progrmr

0

यह देखने के लिए दिनांक पिकर जोड़ें कि ऑटो-घुमाया गया है (नियंत्रक का दृश्य, सीधे विंडो में नहीं)।

सेट self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin

13

मैं एक ही समस्या में पड़ गए। जब आप लैंडस्केप अभिविन्यास में पहले से ही एक दृश्य लोड करते हैं तो यूआईपीकर सही ढंग से प्रस्तुत नहीं किया जाता है। जब तक मुझे this page from Llamagraphics से कोई फिक्स नहीं मिला, तब तक मैंने कई घंटे काम करने की कोशिश की। आप पिकर है कि दृश्य नियंत्रक के viewDidLoad में इस कोड जोड़ें:

for (UIView* subview in myPicker.subviews) { 
    subview.frame = myPicker.bounds; 
} 

जाएँ अधिक जानकारी के लिए webpage। धन्यवाद स्टुअर्ट!

+0

यह बहुत अच्छा काम करता है! – morais

+0

धन्यवाद! मैंने इस समस्या को हल करने के लिए घंटों बिताए हैं! – Nathan

+0

शानदार और सरल समाधान। यह वास्तव में परेशान था, धन्यवाद! – MystikSpiral

0

यहां मेरे लिए क्या काम किया गया है। जब मैं DatePicker बनाने के लिए, मैं इसे लगता है कि यह पोर्ट्रेट मोड में है सुनिश्चित करें:

[[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait animated: NO]; 
datePicker = [[UIDatePicker alloc] initWithFrame: CGRectZero]; 
[[UIApplication sharedApplication] setStatusBarOrientation: curOrientation animated: NO]; 

तो बुनियादी तौर पर, मैं ओरिएंटेशन बदलने, datepicker बनाते हैं, और उन्मुखीकरण वापस बदलने के सही करने के लिए दूर क्या यह पहले था। मैंने पिकर चौड़ाई (स्क्रीन चौड़ाई) और ऊंचाई (216) कहीं और सेट की है।

मुझे यह सुराग दूसरे पृष्ठ से मिला है।

0

मुझे आईपैड पर क्षैतिज रूप से आकार बदलने वाले दिनांक पिकर (टाइमर मोड में) प्रदर्शित करने में एक ही समस्या थी। मुझे काम करने के लिए इस बग के ज्ञात समाधान नहीं मिल सका, इसलिए मैंने इसे एक बदसूरत हैक के साथ तय किया जिसमें दो डेटपिकर्स को देखने में शामिल किया गया - एक पृष्ठभूमि में आकार बदलता है, और दूसरा मानक आकार (320 पीएक्स) में है। अग्रभूमि में ... मुझे पता है, बीमार लगता है, लेकिन यह ठीक से प्रदर्शित करता है और यही मायने रखता है। यह ऐप्पल की गलती है वैसे भी;)

1

नीचे दिया गया कोड पोर्ट्रेट और लैंडस्केप मोड दोनों के लिए काम करेगा। इसके लिए आपको कि नीचे की तरह अपने tableview फ्रेम मूल निर्धारित करने की आवश्यकता: -

_dateTableViewCell=[self.tableView dequeueReusableCellWithIdentifier:@"DatePickerCell"]; 
if (self.dateTableViewCell==nil) 
{ 
    CGRect rect; 
    self.dateTableViewCell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"DatePickerCell"]; 
    UIDatePicker *datePicker=[[UIDatePicker alloc]initWithFrame:frame]; 
    datePicker.datePickerMode=UIDatePickerModeDateAndTime; 
    datePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    CGRect cellRect = self.dateTableViewCell.frame; 
    cellRect.size.height = 216; 
    self.dateTableViewCell.frame = cellRect; 
    CGRect startRect = self.dateTableViewCell.frame; 
    startRect.origin.x = 0.0; 
    datePicker.frame = startRect; 
    [self.dateTableViewCell.contentView addSubview:datePicker]; 
} 
संबंधित मुद्दे