5

मुझे यहां कोई छोटी समस्या है। मेरे पास एक ही स्टोरीबोर्ड पर दो व्यू कंट्रोलर हैं (मेनस्टोरीबोर्ड -> पोर्ट्रेट मोड में कैल्क व्यू कंट्रोलर और लैंडस्केप मोड में कैल्क व्यू कंट्रोलर)। जब मैंने शुरुआती रूप से boolshouldAutoRotate के लिए बनाया है, तो यह घुमाया गया था, हालांकि "और अभी भी" एक प्रतिपादन समस्या थी, क्योंकि कुछ बटन इत्यादि उस स्थान पर नहीं थे जहां आप उन्हें उम्मीद करते थे, दूसरे शब्दों में वे सभी जगह पर थे लैंडस्केप मोड। तो अब मैंने लैंडस्केप मोड और मुख्य पोर्ट्रेट मोड में 2 व्यू कंट्रोलर बनाए हैं। तो अब रोटेशन पर उन दो नियंत्रकों के बीच स्विच करना है।वही स्टोरीबोर्ड पर 2 व्यू कंट्रोलर के बीच स्विचिंग, रोटेशन पर willAutorotateTo ... काम नहीं कर रहा है,

CalculatorViewController.mi में


अद्यतन
मैं देखा है कि कुछ तरीकों IOS 6 से हटा दिया गया (और एक मैं अब उपयोग कर रहा हूँ thats) एक कुछ शोध के बाद मैं ने पाया है कि IOS 6 में " सही तरीका की तरह "इस

@synthesize portraitView, landscapeView; 

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 
-(NSUInteger)supportedInterfaceOrientations:toInterfaceOrientation 
{ 
    if(UIInterfaceOrientationMaskAllButUpsideDown) 
    { 
     if (UIInterfaceOrientationPortrait) 
     { 
      self.view = portraitView; 
     } 
     else if (UIInterfaceOrientationLandscapeLeft) 
     { 
      self.view = landscapeView; 
     } 

    } 
    return YES; 

}  

तथापि होगा, हालांकि मुझे लगता है कि मैं iOS 6 के संबंध में सही तरीकों का उपयोग कर रहा मैं अभी भी नहीं कर सकते सही दृश्य नियंत्रक मिल रोटेशन का आह्वान किया जा करने के लिए

और में CalculatorViewController.h

@interface CalculatorViewController : UIViewController { 


    IBOutlet UIView *portraitView; // declaring view - portrait 
    IBOutlet UIView *landscapeView; // declaring view - landscape 
    //rest of irrelevant code below 

} 
@property (nonatomic, retain) UIView *portraitView; 
@property (nonatomic, retain) UIView *landscapeView; 

enter image description here बस उन 2 सफेद नियंत्रकों वे अब अप्रासंगिक हैं ध्यान न दें। चित्र भेजने से उन 2 दृश्य नियंत्रकों

दिखाने के लिए अपने समय

+0

willAutorotateFromInterfaceOrientation नामक कोई विधि नहीं है:। क्या यह एक टाइपो है, या यह संकलन भी नहीं करता है? – rdelmar

+0

@rdelmar Emmm एक विधि है यदि आप कोड के पहले भाग में - (बूल) willAutorotate .... को देखते हैं? –

+0

मैं इसे अपने कोड में देखता हूं। क्या इसे बुलाया जा रहा है? मुझे ऐप्पल के दस्तावेज में ऐसी कोई विधि नहीं मिल रही है। यदि यह अस्तित्व में है, तो यह पूर्व-आईओएस होना चाहिए 5. – rdelmar

उत्तर

3

मैं कई बार यह एक जोड़े की तरह कार्य कर लेते हैं के लिए धन्यवाद, और यह अक्सर अपने ViewController एक खाली दृश्य है के लिए आसान है। फिर बस अपने लैंडस्केप व्यू को लैंडस्केप में मुख्य सबव्यूव के रूप में जोड़ें, और उसके बाद जब आप पोर्ट्रेट पर घुमाते हैं तो इसे हटा दें और आगे। यदि आप अलग-अलग वीसी रखने की कोशिश करते हैं तो आपके पास आसानी से संक्रमण के लिए राज्य बचत कोड की उलझन वाली गड़बड़ी होगी।

आप दोनों को लगातार उप-दृश्य होने के कारण भी इस डिज़ाइन के साथ परेशान कर सकते हैं, और उपयुक्त होने पर उन्हें दिखा/छुपा सकते हैं। यह अधिक स्मृति गहन है, लेकिन आप कुछ अच्छे संक्रमण एनिमेशन कर सकते हैं।

इस तरह से आपके सभी कनेक्शन और तर्क एक ही वीसी में होंगे और केवल इंटरफ़ेस बदल जाएगा।

+0

हाँ, वास्तव में मैंने ऐसा किया है क्योंकि यह थोड़ा आसान समाधान था क्योंकि मुझे इस समस्या का अनुमान है। –