2012-08-29 23 views
5

UIWindow of AppDelegate uygulamasında UIViewController'dan UILabel eklemeye çalışıyorum.AppDelegate UIWindow addSubView farklı görünümdeController

AppDelegate kodu:

- (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 kodu: Bu yapıyorum nasıl

- (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]; 


} 

Ama görüyorum tüm gri ekran ama hiçbir etikettir. Nerede yanlış gidebilirim?

+0

Sadece küçük bir ipucu, belirli bir iPad veya iPhone görünümünü yüklemek için uygulamanın iPad'de çalışıp çalışmadığını kontrol etmeniz gerekmez. Sadece '~ ipad' görünümüne adını ekleyin.Böylece iphone view dosyası adı olacak: 'ViewController.xib' ve iPad sürümü olacak:' ViewController ~ ipad.xib'. Şimdi sadece şu görünümü yükleyebilirsiniz: '[[ViewController alloc] initWithNibName: @" ViewController "paket: nil]' ve iOS doğru olanı yükleyecektir. – rckoenes

+0

Oh ... Bahşiş için teşekkürler. :) Şimdi cevap lütfen. :) – Nitish

cevap

1

1) içinde UILabel ekledikten sonra bu deneyin: Bunun

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

: Bu satırı değiştirin:

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

2) Pencereye etiketi ekleyebilmeniz gerekirken, bunu yapmak için biraz alışılmışın dışında. Her durumda, viewController en görünümüne etiketi eklemeyi deneyin ve bu çalışıp çalışmadığını anlamak ve eğer öyleyse, ve gerçekten (nedense) penceresine eklemek istiyorum, sonra buraya Yorum eklemek:

[self.view addSubview:abcd]; 

Etiketi hala göremiyorsanız, görüntüleme denetleyicisiyle ilgili bir sorun olması muhtemeldir. Uçta herhangi bir şey tanımladınız mı - lansmanda görünür olması gereken herhangi bir unsur? Eğer değilse, bir şey ekleyiniz, böylece görüntünün aslında yüklendiğinden emin olabilirsiniz. [Kullandığım bir hüner kırmızı veya mavi manzaralı arka plan rengini ayarlamak için, bu yüzden aslında yüklenmiş var olduğunu görebilirsiniz.] Sonra

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

için

0

Belki de görünüm denetleyicinizin görünümü eklediğinizi kapsar. yerine görünüm kontrolörün görünümüne yeni bir görünüm ekleyin:

[self.view addSubview:abcd]; 
3

Sen UIWindow için UILabel eklememelidir, sen UIViewController eklemek gerekir. Ben size son iki temsilci tabloların sırasını tersine önermek

[self.view addSubview:abcd]; 
+0

thx @alfonsomiranda – user1872384

0

UIWindow

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

revers sipariş

[self.view addSubview:abcd]; 

bu daha sonra görünüm denetleyicisi yüklü almıyor etiketinizi görünmüyorsa kodu

aşağıdaki kullanarak pencereye ilk değil görünümüne eklemeyi deneyin. Eğer varsa, xib dosyanızın özelliğini kontrol ediniz.

Pencere ayırma satırını kaldırın ve homockup doğru değilse pencereniz için mainwindow.xib dosyasındaki bağlantıyı kontrol edin, daha sonra görünümü yüklemez.

+0

Teşekkürler. Görünüm denetleyicisi yüklenmiyor, bu yüzden göstermiyor. ** viewDidAppear ** kodunu ekleyin. Çizgiyi kalınlaştır. –

İlgili konular