2

iOSデバイスでテストしたいアプリケーションがあります。アプリケーションはNIBファイルを使用し、ストーリーボードは使用しません。

ターゲットフレームワークは-5.1デバイス-ユニバーサルに設定されています。

IPAファイルを作成し、TestFlightAppにアップロードしました。

iPadにアプリケーションをダウンロードしてインストールしました。奇妙なことに、黒い画面に表示されているアイコンをタップしても、他に何も起こりません。

以下の設定を行いました。

メインインターフェイス-SSDMainViewController メインストーリーボード-アプリケーションにストーリーボードがないため、設定されていません。

他のアプリは正常に動作しているため、IOSバージョンの問題ではありません。

編集:iPadボタンをダブルクリックすると、アプリケーションがクラッシュしていないことがわかりました。バックグラウンドで実行されています。

編集2:質問に関する詳細情報。

ビューベースのアプリケーションを使用しましたが、すべてのNIBにストーリーボードがありません。最初はIOS5.1をターゲットにしたiPhoneアプリケーションでしたが、プロジェクトのドロップダウンからUNIVERSALに値を変更しました。でも、iPadにインストールしても何も表示されなかったので問題ないと思います。また、iPhoneフレームで黒い画面が表示され、その後何も表示されませんでした。アプリケーションはまだスレッド内にあります。

私を悩ませているのは、私がこれをAppDelegate:で行ったことです。

私は設定しました

self.mainViewController = [[SSDMainViewController alloc] initwithnibname:@"SSDMainViewController" bundle:nil];

次に、ナビゲーションコントローラーを設定し、ビューをプッシュしました。

私はいくつかのより多くの情報を見つけました

コンソールにはそれが書かれています。

アプリケーションは、アプリケーションの開始時にルートビューが設定されている必要があります。

マイアプリデリゲート

ftipValue = 0.25;

cardtype = @"American Express";
[cardtype retain];

[self CallFunctionForLogout];

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Create an instance of YourViewController

//SSDMainViewController *yourViewController = [[SSDMainViewController alloc] init];
self.mainViewController = [[[SSDMainViewController alloc] initWithNibName:@"SSDMainViewController" bundle:nil] autorelease];



// Create an instance of a UINavigationController

// its stack contains only yourViewController

UINavigationController *navController = [[UINavigationController alloc]

                                                  initWithRootViewController:self.mainViewController];

navController.navigationBarHidden = YES;

// Place navigation controller's view in the window hierarchy

[[self window] setRootViewController:navController];

[self.window makeKeyAndVisible];

return YES;
4

3 に答える 3

4

2 つの xib ファイルを使用してください。2 つの xib (nib) が必要なユニバーサル アプリ

  • iPhone 用の 1 つ - ViewController_iPhone
  • 2 番目の iPad 用 - ViewController_iPad

次のコードを 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.
       if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
       {
           self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease];
        } 
       else {
           self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease];
        }
        self.window.rootViewController = self.viewController;
        [self.window makeKeyAndVisible];
        return YES;
    }

私はこれを行いましたが、私にとってはうまくいきます。

于 2012-11-01T06:16:54.060 に答える
3

このエラーは、アプリケーションが正しく設定されていないことを意味します。

SSDMainController をメイン インターフェイス ファイルとして設定したとのことですが、これは iPhone と iPad の両方に対応していますか? ユニバーサル アプリの概要タブのそのセクションには、2 つのエントリ セットがあります。

異なるサイズのビューと異なるレイアウトが使用されるため、iPad 用に別の xib ファイルが指定されることを期待します。

iPad xib を設定していないため、アプリはルート ビュー コントローラーを使用してウィンドウを設定できないか、有効な iPad xib を設定していないため、まったく読み込まれず、同じ結果になります。

アプリを 2x ボタンのあるミニ iPhone ウィンドウで実行したいだけの場合は、iPhone のみのアプリのままにしておきます。

于 2012-10-28T07:17:00.210 に答える
2

「アプリケーションの起動時に、アプリケーションのルートビューが設定されていることが期待されます」というメッセージが表示された場合。いくつかの可能性があります。明らかに、それ問題です。何も入っていない黒い画面があるからです...

このSOの質問を確認してください。アプリケーションウィンドウには、アプリケーションの起動警告の最後にルートビューコントローラーが必要です 。RobMayoffは、アプリケーションの初期化時に何が起こるかについて適切に説明しています。

また、上記の投稿にリンクされているのは、この投稿で、何が起こっているのかについてのさまざまなシナリオを含む35の回答が追加されています。

これらのリンクを閲覧するだけでなく、追加のコードやペン先がどのように配線されているかについての説明を投稿する必要があります。これは、初期化シーケンスを無効にする可能性のある無数の方法からも明らかです。

于 2012-10-28T21:31:14.227 に答える