2012-08-29 13 views
5

मैं UIViewController से AppDelegate के UIWindow में UILabel जोड़ने की कोशिश कर रहा हूं। यह मैं यह कैसे कर रहा हूँ है:AppDelegate UIWindow addSubView अलग-अलग दृश्य में नियंत्रक

AppDelegate कोड:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease]; 
    } else { 
     self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease]; 
    } 



    [self.window makeKeyAndVisible]; 

    self.window.rootViewController = self.viewController; 


    return YES; 
} 

ViewController कोड:

- (void)viewDidLoad 
{ 

    UILabel *abcd=[[UILabel alloc] initWithFrame:CGRectMake(100.0, 100.0, 200.0, 40.0)]; 

    [email protected]"loading..."; 

    abcd.backgroundColor=[UIColor clearColor]; 

    [[[[UIApplication sharedApplication] delegate] window] addSubview:abcd]; 

    [super viewDidLoad]; 


} 

लेकिन सब मैं देख रहा हूँ ग्रे स्क्रीन है, लेकिन कोई लेबल है। मैं गलत कहां जा रहा हूं?

+0

बस एक छोटी सी युक्ति, आपको एक विशिष्ट आईपैड या आईफोन व्यू लोड करने के लिए आईपैड पर ऐप चल रहा है गीला जांचने की ज़रूरत नहीं है। दृश्य के नाम पर '~ ipad' बस संलग्न करें।इस प्रकार आईफोन व्यू फ़ाइल का नाम होगा: 'ViewController.xib' और आईपैड संस्करण होगा:' ViewController ~ ipad.xib'। अब आप केवल दृश्य को लोड कर सकते हैं: '[[ViewController alloc] initWithNibName: @ "ViewController" बंडल: शून्य]' और आईओएस सही लोड करेगा। – rckoenes

+0

ओह ... टिप के लिए धन्यवाद। :) अब जवाब कृपया। :) – Nitish

उत्तर

1

1) में UILabel को जोड़ने के बाद इस प्रयास करें मेरा सुझाव है कि आप अपने पिछले दो प्रतिनिधि बयानों का क्रम उलटने:

self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 

2) जबकि आप विंडो में लेबल जोड़ने में सक्षम होना चाहिए, ऐसा करने के लिए कुछ हद तक अपरंपरागत है। किसी भी मामले में, ViewController का दृष्टिकोण करने के लिए लेबल जोड़ने का प्रयास करें और देखते हैं कि अगर काम करता है, और यदि हां, और तुम सच में विंडो (किसी कारण से) में जोड़ना चाहते हैं, तो यहाँ कोई टिप्पणी जोड़ें:

[self.view addSubview:abcd]; 

यदि आप अभी भी लेबल को नहीं देख पा रहे हैं तो दृश्य नियंत्रक के साथ कोई समस्या है। क्या आपने निब में कुछ भी परिभाषित किया था - किसी भी तत्व को लॉन्च पर दिखाना चाहिए? यदि नहीं तो बस कुछ जोड़ें ताकि आप सुनिश्चित हो सकें कि दृश्य वास्तव में लोड हो रहा है। [एक चाल का उपयोग मैं लाल या नीली को देखे जाने का पृष्ठभूमि रंग सेट करने के लिए है, इसलिए मैं देख सकते हैं कि वास्तव में वे भरी हुई हो गया।]

0

हो सकता है कि आपका व्यू कंट्रोलर का दृश्य आपके द्वारा जोड़े गए को कवर कर रहा हो। इसके बजाय दृश्य नियंत्रक के दृश्य के लिए नया दृश्य जोड़ें:

[self.view addSubview:abcd]; 
3

आप UIWindow के लिए UILabel जोड़ नहीं चाहिए, आप UIViewController में जोड़ना चाहिए।

[[[[UIApplication sharedApplication] delegate] window] addSubview:abcd]; 
इस के लिए

: इस लाइन को बदलें

[self.view addSubview:abcd]; 
+0

thx @alfonsomiranda – user1872384

0

UIWindow

[[[[UIApplication sharedApplication] delegate] window] makeKeyAndVisible]; 
2

revers

self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 
फिर

करने के क्रम कोड

[self.view addSubview:abcd]; 

इस अपने लेबल दिखाई नहीं देता है तो दृश्य नियंत्रक लोड नहीं हो रही है निम्नलिखित का उपयोग कर खिड़की के दृश्य को जोड़ने पहले नहीं की कोशिश करो।

यदि ऐसा है तो अपनी xib फ़ाइल की संपत्ति जांचें।

विंडो आवंटन लाइन को हटाएं और मुख्य खिड़की के लिए हुक अप की जांच करें यदि hoockup सही नहीं है तो यह दृश्य लोड नहीं करेगा।

+0

धन्यवाद। दृश्य नियंत्रक लोड नहीं हो रहा है, इसलिए यह प्रदर्शित नहीं होता है। ** viewDidAppear ** में कोड जोड़ें। रेखा बोल्ड। –

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