1

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 *'
4

2 に答える 2

1

プロパティを設定window.rootViewControllerします。

于 2012-12-27T09:07:52.610 に答える
0

次のコードを delegate.h および delegate.m ファイルに追加します。

AppDelegate.h

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) YourViewController *viewController;

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[YourViewcontroller alloc] initWithNibName:@"YourViewcontroller" bundle:nil] autorelease];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

それがうまくいくことを願っています。

于 2012-12-27T09:12:30.033 に答える