Xcode4.5とiOS6を使用してiPhone用のアプリを書いています。UIWindow
また、ステータスバーの領域を管理できるようにするために(そこにメッセージを表示するためなどに)新しいものを作成しています。ストーリーボードを使用しており、appDelegate
メソッドは次のようになります。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
return YES;
}
次のメソッドにメッセージを入れても、コンソールにメッセージが表示されませんviewDidAppear
。
- (void)viewDidAppear:(BOOL)animated {
if (!window) {
window = [[SGStatusBar alloc] initWithFrame:CGRectZero];
window.frame = [[UIApplication sharedApplication] statusBarFrame];
window.alpha = 0.5f;
[self.view.window makeKeyAndVisible]; // has to be main window of app
window.hidden = NO;
}
}
同じ方法をviewDidLoad
入力すると、コンソールに警告が表示されます。
2012-12-27 11:34:20.838 NewApp[433:c07] Application windows are expected to have a root view controller at the end of application launch
これは私が新しいものを作成したからUIWindow
ですか?なぜこれら2つの方法の違いがとても大きいのですか?
そして、最も重要なのは、メソッドにコードを配置しているときにこの警告を取り除くにはどうすればよいですか?viewDidLoad
編集:
私はここで同じ問題に遭遇しましたが、それは私がそれを解決したい方法ではありません(それは実際に私が今それを解決している方法です)
これを実行して、現在のViewControllerをウィンドウのルートViewControllerとして設定しようとしました。
ViewController *vcB = [[UIViewController alloc] init];
window.rootViewController = vcB;
しかし、私は次のような警告を受け取り続けます。
Incompatible pointer types initializing 'ViewController *__strong' with an expression of type 'UIViewController *'