2010-12-11 8 views
4

シミュレータで以下のコードを実行すると、赤色の画面が表示されることが予想されますが、その代わりにすべて黒です。なぜですか?uiviewがアプリケーションデリゲートに表示されない

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    UIView * myView = [[UIView alloc] initWithFrame:[window bounds]]; 
    [myView setBackgroundColor:[UIColor redColor]]; 
    [window addSubview:myView]; 
    [window makeKeyAndVisible]; 
    return YES; 
} 

私は助けにはならないウィンドウの初期化、追加した場合:

window = [[[UIWindow alloc] init] initWithFrame:[[UIScreen mainScreen] bounds]]; 

をXcodeでウィンドウベースのユニバーサルプロジェクトを作成した後、私はアプリ/ iPhone XIBを削除することを決めたとき、私のトラブルが始まっファイルとiPhone/iPadアプリはプロジェクトで自動的に作成されたファイルをデリゲートし、デバイスに基づいてビューをプログラマチックにビルドするビューコントローラを持つ単一のアプリケーションデリゲートを持っています。今私は、アプリケーションデリゲートで作成したシンプルなビューを表示できないようです。

編集:ビューの追加を削除し、ウィンドウの背景色を赤に設定しました。それは助けになりませんが、私がシミュレータのデスクトップに行って実行中のアプリケーションを再度開くと、今は赤い画面が表示されます。繰り返しますが、アプリを初めて起動したときに私が赤色に見えない理由については困惑しています。

答えて

8

ここでは、InterfaceBuilder(.xib)以外のUniversal iOSプロジェクトを設定する手順を示します。

  1. アプリケーションのプロパティリストにある.xibファイルへのすべての関連付けを削除します。 Delete the .xib file references from your application plist

  2. *。プロジェクト

  3. (オプション)からのすべての.xibのファイルが共通のアプリケーションデリゲートクラスを作成し、AppDelegate_iPadを削除削除しAppDelegate_iPhone。*ファイル。 (削除する前に既存のファイルからコードをコピーして貼り付けてください)
  4. アプリケーションの委任先にmain.mファイルを変更します。私は、AppDelegate_iPhoneを変更して使用することを目的として選択しました。ドキュメントを参照してください:メインUIApplication Reference

    // main.m int型(int型のargc、char型* ARGV []){

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    // Start an iPhone/iPad App using a .xib file (Defaults set in .plist) 
    //int retVal = UIApplicationMain(argc, argv, nil, nil); 
    
    // Start the iPhone/iPad App programmatically 
    // Set the 3rd argument to nil, to use the default UIApplication 
    // Set the 4th argument to the string name of your AppDelegate class 
    int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate_iPhone"); 
    
    [pool release]; 
    return retVal; 
    

    }

  5. は、アプリケーションデリゲートのコードを更新します。

    // AppDelegate_iPhone.m - (BOOL)アプリケーション:(のUIApplication *)アプリケーションdidFinishLaunchingWithOptions:(NSDictionaryの*)launchOptions {

    // Override point for customization after application launch. 
        NSLog(@"Launch my application iphone"); 
    
        // Create the window, it's not created without a nib 
        window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    
        // Create a subview that is red 
        UIView *myView = [[UIView alloc] initWithFrame:[window bounds]]; 
        [myView setBackgroundColor:[UIColor redColor]]; 
    
        // Add the subview and release the memory, sicne the window owns it now 
        [self.window addSubview:myView]; 
        [myView release]; 
    
        [self.window makeKeyAndVisible]; 
    
        return YES; 
    } 
    
+0

+1ニースの詳細。 –

+0

これは素晴らしい答えであり、私が取った手順を概説していますが、より詳細に説明しています。UIWindowを2回初期化する際に私の不具合が発生していたことがわかります(上記参照)。今すぐすべての作品。あなたの素晴らしい答えをありがとう。ステップやプロジェクト設定/コードを編集する場所の数があるので、私が最初に始めたとき – andrewz

+0

どういたしまして、私はこれはイライラすることが判明しました。私は理由は分かりませんが、コードとしてマークしようとしても、コードが正しくフォーマットされていません。 –

1

あなたのコードを実行しようとしましたが、それは私のために働いた。私は赤色に着色された空のビューを手に入れました。ブレークポイントを追加してコードが実際に実行されたことを確認しようとしましたか?さもなければ私はそれがあなたのUIWindowの何かであるということを思い付くことができます。

+0

私はこの問題は、私は窓を初期化されたものを考え出しました間違って、私はこういうダブルのinitをしました:[[[UIWindow alloc] init] initWithFrame:bounds]。私が最初のinitを削除したら、それを動作させました。私はこのLOLで6時間以上を過ごしました。ありがとう! – andrewz

+0

しばらくキーボードを離れて後で戻ってくることがあります。あなたがそれを解決したことを聞いてうれしい。 – ehenrik

関連する問題