1

Blackboard SDKを使用してアプリを作成しています。SDK をダウンロードして、同じエラーがあるかどうかを確認できると、本当に助かります。ここにあるのは手順へのリンクです。誰かが従いたい場合に備えてください。ページ数が多すぎません。

指示は言う

「モジュールはランチャー アプリケーション内で実行されているため、MainWindow.xib ファイルはランチャー用のファイルです。したがって、競合が発生するため、モジュールに独自の MainWindow.xib ファイルを含めることはできません。

さらに、モジュールの最初の起動時に nib ファイルからビューが自動的にロードされることはありません。したがって、nib からロードされるすべてのビューはコードに手動でロードする必要があり、すべての nib ファイルは同じ命名規則に従い、リソース ファイルに含める必要があります。

もともと、私はそのようにView Controllerをインスタンス化しようとしました

   testVC = [[LMU_LAL_ViewControllerTest alloc] initWithNibName:@"LMU_LAL_ViewControllerTest" bundle:nil];

しかし、それはクラッシュを引き起こしました。私が受け取ったエラーメッセージは

Could not load NIB in bundle: 'NSBundle </Users/mahir/Library/Application Support/iPhone Simulator/6.0/Applications/2ABAAF9D-5141-41B2-8EFB-51C3E047AD67/testLauncher.app> (loaded)' with name 'LMU_LAL_ViewControllerTest

以前のバージョンの xcode をダウンロードすることで問題を解決できると誰かが言っていましたが、まだ解決していません。また、メソッドを から に変更し、initWithNibName:bundle:これinitを View Controller サブクラスに追加しました

- (void)loadView
{
[super loadView];

UINib *nib = [UINib nibWithNibName:@"LMU_LAL_ViewControllerTest" bundle:nil];
[nib instantiateWithOwner:self options:nil];
} 

繰り返しますが、同様のエラーが表示されますが、今回は回線上にあります [nib instantiateWithOwner:self options:nil]

私は何を間違っていますか??

編集:

以下は、サポート チームの誰かが私にくれたものからの抜粋です。

.xib ファイルを含む、モジュールで使用されるすべてのリソースは、LAUNCHER のプロジェクトに含める必要があります。これは、モジュールをテストするために実際に実行しているプロジェクト (ランチャー プロジェクト) では、すべてのリソース ファイルをそのプロジェクト内に含める必要があることを意味します。これが事実であるかどうかをテストする簡単な方法は、ランチャー プロジェクトの Xcode の左側のバーを見て、.xib ファイルを見つけることです。これにより、リソース ファイルが実際にプロジェクトに含まれるようになります。Xcode のランチャー プロジェクトに、どのように見えるかのスクリーンショットを含めました。

ここに画像の説明を入力

これは私が現在持っているものです

ここに画像の説明を入力

4

7 に答える 7

3

Erfan のソリューションに対するあなたの回答から、問題は単にファイル LMU_LAL_ViewControllerTest.xib がターゲットのビルド フェーズにないことにあるようです。つまり、ターゲット (プログラム) は、ナビゲーターでファイルを見ることができたとしても、ビルド中にファイルを見ることはありません。

xib ファイルをターゲットに追加する別の方法は、次のとおりです。

  • ナビゲーターペインの上部でプロジェクトを選択します
  • ナビゲーターの右側にある次のペインで、ターゲットを選択します。
  • open Copy Bundle Resources: LMU_LAL_ViewControllerTest.xib がここにリストされているはずですが、おそらくここには表示されないでしょう。
  • +ポップアップウィンドウからファイルを選択して選択し、追加します

これが機能しない場合 (Erfan のソリューションと同等であるため、機能しない可能性があります)、プロジェクトからファイルを削除して、再度追加してみてください。削除するときは、必ずMove to Trash. プロジェクトに再度コピーするときは、表示されるポップアップ ウィンドウで、 の横にある適切なボックスにチェックを入れてくださいAdd to Targets

このファイルがビルド フェーズにない場合、他のファイルも見つからないことがあり、同様のエラーが発生します。すべてのビルド フェーズ、特に他のリソース ファイルの [バンドル リソースのコピー] と、目的の C クラスの実装ファイルの [ソースのコンパイル] を確認できます。

于 2012-10-08T02:53:45.567 に答える
1

エラーの原因となっている NIB ファイル (この場合は LMU_LAL_ViewControllerTest.xib) を選択し、ファイル インスペクターに注意して、「ターゲット メンバーシップ」セクションに移動します。左側にチェックボックスが付いたプロジェクト名が表示されます。そのボックスをチェックして (選択済みとしてマーク)、アプリケーションをビルドして実行します。それは以前に私に起こり、この方法で解決しました。これを試してみて、役立つかどうかをお知らせください。

于 2012-10-04T05:07:56.903 に答える
1

リンク先の Blackboard SDK をダウンロードし、.xibファイルを含むビュー コントローラーを に正常に追加ExampleModuleし、外側から起動しましたSpringboardApplication

必要な中心的なアクションは、ファイルのコンパイル済みバージョンを出力フォルダーに配置する.xibことです。これを行う方法を以下に示します。これは、CocoaPods の機能に基づいています。

  1. 以下に示すように、モジュール サブプロジェクトに View Controller を作成します。

    XCode アプリケーション ファイル一覧

  2. Springboard Application以下にリストされているファイルの内容を使用して、上記のようにプロジェクトにシェル スクリプトを作成します。

  3. スクリプトを実行可能としてマークしてください! そうしないと実行されません。これは、コマンドラインから実行できます。

    chmod +x /path/to/your/script.sh

  4. Build Phasesのタブを開きますSpringboard Application。ビルド フェーズを追加し、Run Script以下に示すようにスクリプトを参照します。

    XCode アプリケーションの [ビルド フェーズ] タブ

このスクリプトを使用ibtoolして、ファイルのコンパイル済みバージョンを作成し、.xibそれらをコンパイル済みアプリケーションに配置して、アプリケーションがそれらを参照できるようにします。

SpringboadApplication を制御できない場合、静的ライブラリにはコンパイル済みオブジェクト コードのみを含めることができ、リソースやバンドルを含めることができないため、XIB ファイルを使用できない場合があります。SpringboardApplication の所有者が喜んで協力する場合は、ここでの私の回答のバリエーションまたはこの StackOverflow の質問が役立つ場合があります。

CocoaPods スクリプト(MIT ライセンス)に基づく、そのスクリプトの内容は次のとおりです。

#!/bin/sh

install_resource()
{
    case $1 in
        *.storyboard)
            echo "ibtool --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename $1 .storyboard`.storyboardc ${SRCROOT}/$1 --sdk ${SDKROOT}"
            ibtool --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename $1 .storyboard`.storyboardc" "${SRCROOT}/$1" --sdk "${SDKROOT}"
            ;;
        *.xib)
            echo "ibtool --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename $1 .xib`.nib ${SRCROOT}/$1 --sdk ${SDKROOT}"
            ibtool --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename $1 .xib`.nib" "${SRCROOT}/$1" --sdk "${SDKROOT}"
            ;;
        *)
            echo "cp -R ${SRCROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
            cp -R "${SRCROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
            ;;
    esac
}
install_resource `ls ../../Modules/ExampleModule/*.xib`

モジュールからアプリケーションに必要なすべてのリソースを含めるには、最後の行をカスタマイズする必要があることに注意してください。明らかに、これは複数の行を使用して実現できます。

ViewController コードはまったく変更せず、XCode で生成されたバージョンのままです。

プロジェクトでこの作業を行うことができない場合は~/Blackboard Mobile SDK/Samples/Application/SpringboardApplication、私に知らせてください。必要に応じて詳細を提供します.

于 2012-10-01T05:41:47.580 に答える
1

のドキュメントでその説明を見つけることができますinitWithNibName:bundle:

nib ファイルを検索するバンドル。このメソッドは、最初にバンドルの言語固有のプロジェクト ディレクトリで nib ファイルを検索し、続いて Resources ディレクトリを検索します。の場合nil、このメソッドはメイン バンドル内の nib ファイルを探します。

エラーに関しては、おそらく xib ファイルの名前またはコードにタイプミスがあります。

于 2012-09-26T00:04:35.163 に答える
0

アプリケーション ビルド設定に移動し、バンドル リソースで .xb ファイルが追加されているかどうかを確認してください。追加されていない場合は、追加してください。それはあなたの問題を解決します

于 2012-10-07T20:32:10.847 に答える
0

バンドルを指定しないという事実は、「バンドル」からロードされないという意味ではなく、デフォルトであるアプリケーション バンドルからロードされることを意味するだけです。NibName の名前が Interface Builder の Xib ファイルと一致することを確認します。

于 2012-09-26T00:04:02.207 に答える
0

拡張子を指定してみてください。@"LMU_LAL_ViewControllerTest.xib" をロードしてみてください

于 2012-10-01T02:12:16.083 に答える