2

navigationController に ioutlet を作成し、それを currentview に追加しようとすると、何も表示されません。コードで navigationController を初期化し、それをビューに追加すると、完全に機能します。

mainWindows.xib で作成し、それを applicationDidFinishLaunching メソッドのビューに追加しても機能します。

しかし、別のviewControllerからロードしようとするとすぐに失敗し、空白の画面が残ります。

したがって、プログラムで追加するか、mainWindow.xib に追加すると機能します。

私はそれを機能させるために何時間も努力してきました。とてもシンプルに思えますが、他の xib ファイルでは動作しません。

私のセットアップ:

#import "RootViewController.h"

RootViewController *rootViewController=[[RootViewController alloc] init];
[window addSubview:rootViewController.navController.view];

私の RootViewController には、navigationController への ibOutlet があります。

誰にもアイデアはありますか?なぜこの単純なことがうまくいかないのか、私にはまったくわかりません。私は何が欠けているのですか、それは私を夢中にさせます。

****UPDATE**** 上記のコードは、次のように変更すると機能します: rootViewController.view にアクセスする必要があります。

#import "RootViewController.h"

RootViewController *rootViewController=[[RootViewController alloc] init];
if(rootViewController.view){
NSLog(@"nil"); 
}
[window addSubview:rootViewController.navController.view];

前もって感謝します!

4

3 に答える 3

1

これは、アクセスするとview実際にゲッターが呼び出され、コントローラーのビューが遅延して (オンデマンドで) 作成されるためです。最初にgetter メソッドを呼び出すまで、 は存在しませんrootController。最初のアプリ ビューを作成する通常の方法は次のとおりです。viewview

[window addSubview:someController.view]

ビューの作成を処理します。

于 2010-01-10T18:39:11.660 に答える
0

これが私に起こったときはいつも、Interface Builder で何かを接続するのを忘れていたことが問題でした。コントローラーがアプリ デリゲートの rootViewController アウトレットまたはその他の場所に接続されていることを確認してください。また、ウィンドウが接続されていることを確認してください。

何かが接続されていない場合、アウトレットで nil になるため、self.rootViewController.navController.view は [[nil navController] ビュー] になり、nil であり、サブビューとして nil を追加しようとします。window が nil の場合も同様に nil と通信することになりますが、接続されていないのはおそらく rootViewController です。

于 2010-01-10T01:41:42.883 に答える
0

コントローラーがIBにのみ接続されている場合、アプリはiPadで正常に読み込まれますが、iPhoneでは空白の画面が表示され、デバッガーはコントローラーのビューに0のフレームがあることを示しています。 0, 0, 0 ApplicationDidFinishLaunching のコードで rootviewcontroller アウトレットをリセットして修正しましたが、これが機能しない理由がわかりません

于 2012-01-06T10:34:52.620 に答える