2010-08-14 15 views
6

मुझे यूनिवर्सल ऐप में काम कर रहे UISplitViewController को प्राप्त करने में समस्या हो रही है जहां मैंने पहले से ही आईफोन भाग को कोड किया है। एक समस्या निवारण विधि के रूप में, मैंने एक नई परियोजना के साथ शुरू करने का फैसला किया और केवल एक ऐसी कार्रवाई करने का प्रयास किया जो समस्या पैदा कर रहा है और यह अभी भी है।एक सार्वभौमिक ऐप में UISplitViewController का उपयोग नहीं कर सकता?

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

अगर कोई इसे स्वयं जांच सकता है और देख सकता है कि उन्हें एक ही चीज़ मिलती है, या मुझे बताएं कि मैं कहां गलत हो रहा हूं, तो मैं इसकी सराहना करता हूं।

  1. एक्सकोड में, एक सार्वभौमिक "विंडो-आधारित" ऐप बनाएं।
  2. आईपैड नियंत्रक में जाएं और नीचे दिए गए कोड में पेस्ट करें।

मुझे जो मिलता है वह एक ब्लैक स्क्रीन है, एक अलग दृश्य नहीं। एक ही कोड आईपैड-केवल प्रोजेक्ट में काम करता है। मैं गलत क्या कर रहा हूं, या क्या गलत कॉन्फ़िगर किया गया है? सब से

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    UISplitViewController *split = [[UISplitViewController alloc] initWithNibName:nil bundle:nil]; 

    UIViewController *vc1 = [[UIViewController alloc] initWithNibName:nil bundle:nil]; 
    vc1.view.backgroundColor = [UIColor redColor]; 

    UIViewController *vc2 = [[UIViewController alloc] initWithNibName:nil bundle:nil]; 
    vc2.view.backgroundColor = [UIColor blueColor]; 

    split.viewControllers = [NSArray arrayWithObjects:vc1, vc2, nil]; 

    [window addSubview:split.view]; 
    [window makeKeyAndVisible]; 

    [vc1 release]; 
    [vc2 release]; 
    [split release]; 

    return YES; 
} 

उत्तर

3

सबसे पहले, आप didFinishLaunchingWithOptions में अपने विभाजित दृश्य को रिहा नहीं करना चाहिए। इसे अपने इंटरफ़ेस में जोड़ें (UIWindow के तहत) और केवल इसे डेलोक पर छोड़ दें। दूसरा, उपवर्ग UISplitViewController इस प्रकार है:

@interface MySplitViewController : UISplitViewController 
{ 
} 
@end 
@implementation MySplitViewController 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 
@end 

तीसरा, अपने didFinishLaunchingWithOptions इस तरह दिखना चाहिए:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    split = [[MySplitViewController alloc] init]; 

    UIViewController *vc1 = [[UIViewController alloc] init]; 
    vc1.view.backgroundColor = [UIColor redColor]; 

    UIViewController *vc2 = [[UIViewController alloc] init]; 
    vc2.view.backgroundColor = [UIColor blueColor]; 

    split.viewControllers = [NSArray arrayWithObjects:vc1, vc2, nil]; 

    [window addSubview:split.view]; 
    [window makeKeyAndVisible]; 

    [vc1 release]; 
    [vc2 release]; 

    return YES; 
} 
+0

आप स्मृति प्रबंधन और अतिरिक्त इवर के साथ सही कर रहे हैं। ShouldRotateToInterfaceOrientation: ओवरराइड बहुत अच्छा लगता है, लेकिन यह मेरे लिए काम नहीं करता है। आपने कोशिश की है? – tonklon

+0

यदि UISplitViewController subclassing आपके लिए काम नहीं करता है, तो प्रत्येक UIViewController को उप-वर्गीकरण करने का प्रयास करें और ओवरराइड करना चाहिएRotateToInterfaceOrientation: प्रत्येक में। यह शायद इसे करने का सबसे अच्छा तरीका है ... – ian

+0

यह स्प्लिटव्यू उप-नियंत्रक 'ऑटोरोटेट और रिलीज समस्या संयुक्त थी। – codepoet

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