0

同様の質問を持つ他の投稿があることを知っており、それらをチェックしましたが、どれも私の問題に関するものではないようですので、ご容赦ください.

私は iPad でのみ実行するアプリケーションを開発しているため、普遍的なものはありません。MainWindow nib ファイルは iPad 用に設計されています。

問題は、Xcode (5.0 と 5.1 の両方) から iPad シミュレーターで実行する限り、すべて正常に動作することです。しかし、実際の iPad (iOs 5.0 を搭載) で実行しようとするとすぐに、空白の画面が表示され、コンソールに「アプリケーションには、アプリケーションの起動の最後にルート ビュー コントローラーが必要です」というメッセージが表示されます。

関連するはずのコードを次に示します。

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

...
self.window.rootViewController = self.splitViewController;
[self.window makeKeyAndVisible];

VistaInizialeViewController *inizialeAppoggio = [[VistaInizialeViewController alloc] initWithNibName:@"VistaInizialeViewController" bundle:nil];
self.vistaIniziale = inizialeAppoggio;
[inizialeAppoggio release];
 id debug = self.window.rootViewController;
[self.window.rootViewController.view addSubview:self.vistaIniziale.view];
...
debug = self.window.rootViewController;

したがって、私を混乱させているのは次のとおりです。シミュレーターで上記のステップバイステップを実行すると、デバッグ変数 (ルートビューコントローラー) が初期化され、実際のデバイスで実行するとすべてがゼロになります。

わかりました、それは私からです。これについて何か助けていただければ幸いです。

みんなありがとう。

4

2 に答える 2

0

1) デバイスでは大文字と小文字が区別されますが、シミュレータでは区別されません。

nib ファイルの名前が ' VistaInizialeViewController' であり、' vistaInizialeViewController' や ' ' ではありませんVistainizialeViewControllerか?

2) self.splitViewcontroller でないことを確認します -起動時に読み込まれるメインの xib にnil正しいファイル名を指定していることを確認します(または、コードで生成している場合は、ブレークポイントを出して、生成されていることを証明するためにステップスルーします)xib正しく)

于 2012-04-10T15:57:22.010 に答える
0

わかりました、解決しました。私がしたことは、self.window.rootViewControllerを設定する前に次のコードを追加することでした

UISplitViewController *splitAppoggio = [[UISplitViewController alloc] init];
CategoriesViewController *categorieVC = [[[CategoriesViewController alloc] init] autorelease];
DetailViewController *dettaglioVC = [[[DetailViewController alloc] init] autorelease];
categorieVC.detailViewController = dettaglioVC;
UINavigationController *navVC = [[UINavigationController alloc] initWithRootViewController:categorieVC];
NSArray *arrayVC = [NSArray arrayWithObjects:navVC,dettaglioVC, nil];
splitAppoggio.viewControllers = arrayVC;
splitAppoggio.delegate = dettaglioVC;
self.splitViewController = splitAppoggio;
[splitAppoggio release]; 

これで実機でも正常に動作します。シミュレーターで実行するためにこれが必要でなかったのに、iPadで実行するためにこれが必要な理由はまだわかりません...

于 2012-04-11T12:27:58.573 に答える