0

私はiPhone開発に不慣れです。このウィンドウのサブビューとして、ウィンドウとナビゲーションコントローラーを備えた単純なアプリケーションを作成しようとしました。問題はこれです:アプリケーションを起動したときにサブビューがロードされませんでした。画面が黒い窓があります。ビューコントローラをロードするには、アプリケーションを終了してもう一度起動する必要があります。その後、ナビゲーションコントローラを使用してサブビューを作成します。黒い画面が問題にならないように、ウィンドウに直接ボタンを追加しましたが、起動時にボタンが表示されました。

これは、AppDelegateにあるコードです。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]autorelease];
    [self.window addSubview:_navigationController.view]; 
    [self.window makeKeyAndVisible];    
    return YES;
}

この問題の解決策はありますか?

ありがとうございました。

4

1 に答える 1

2

ビュー階層が設定されていることを確認する必要があります。ウィンドウのrootViewControllerはUINavigationControllerになります。UINavigationControllerはviewControllerの階層を制御するため、インスタンス化するときにrootViewControllerを割り当てる必要があります。多くの場合、これはUITableViewのサブクラスです。

ウィンドウを割り当て/初期化するため、UINavigationControllerとUITableViewControllerのような関連するrootViewControllerを備えたXIB/NIBがないと想定しています。また、ナビゲーションコントローラのビューを追加するのではなく、rootViewControllerをウィンドウに割り当てる必要があります。iOS4以降、これは物事を行うための好ましい方法です。こちらもご覧ください。このコードを試してください:

YourViewController *yourViewController = /* code for alloc/initing your viewController */
_navigationController=[[UINavigationController alloc] initWithRootViewController:yourViewController ]
self.window.rootViewController=_navigationController; /* instead of using [self.window addSubview: _navigationController.view] */
[self.window makeKeyAndVisible];

XIB / NIBを使用している場合は、_navigationControllerがXIBファイルに接続されており、viewControllerのサブクラスがrootViewControllerとして接続されていることを確認する必要があります。

幸運を

于 2011-12-03T20:56:20.573 に答える