0

(これは非常に大規模なプロジェクトの簡単な説明です)

2 つのターゲットを持つ XCode プロジェクトがあります。2 つのターゲットの唯一の違いは、ターゲットごとにビューコントローラーの実装が異なることです。

ビュー コントローラーには xib があり、内部に UITextView がある単純なビューです。これを TextReportViewController と呼びましょう。

実装「A」には印刷機能があるため、UITextView の内容を印刷できるボタンがあります。「A」というグループに属しています。

実装「B」には電子メールがあるため、UITextView のコンテンツを電子メールで送信できるボタンがあります。「B」というグループに入っています。

ターゲット "A" は、その "コンパイル ソース" にグループ "A" の .m ファイルを含め、"バンドル リソースのコピー" はグループ "A" から xib を取得します。

ターゲット "B" は、その "コンパイル ソース" にグループ "B" の .m ファイルを含め、"バンドル リソースのコピー" はグループ "B" から xib を取得します。

「A」の後に「B」を追加しました。つまり、別のターゲットが必要であると判断する前に、「A」で機能していました。

「B」xib ファイルを編集して「ファイルの所有者」を調べ、ID インスペクターでカスタム クラス タイプの矢印をクリックすると、「B の」.m ファイルではなく、「A の」.m ファイルに移動します。

ファイルの所有者のアウトレットを見ると、「A」と「B」のアウトレットの組み合わせです。

コントロールを "B's" xib に追加し、アシスタント エディターで "B's" .h ファイルを表示し、ボタンをドラッグして IBOutlet を作成し、代わりに "A's" .h ファイルに入れます。

ターゲット A が A の .h ファイルと xib ファイルを使用し、ターゲット B が B の .h ファイルと xib ファイルを使用していることを確認するにはどうすればよいですか。

ターゲット「B」を追加すると、「B」というフォルダーが作成されたことに注意してください。したがって、ファイルは次のように配置されます。

根:

TextReport:

    TextReportViewController.m

    TextReportViewController.h

    TextReportViewController.xib

B:

    TextReport:

        TextReportViewController.m

        TextReportViewController.h

        TextReportViewController.xib

また、「B」xib ファイルを編集していて、アシスタント エディターを表示し、「自動」を選択して .h ファイルと .m ファイルを表示すると、2 つの .h ファイルと 2 つの .m ファイルの 4 つが表示されます。

4

2 に答える 2

1

このような設定はできないと思います。各ターゲットは VC の異なるコピーを使用しますが、Xcode プロジェクトには同じ名前のファイルの両方のコピーが必要です。これが混乱の始まりです。IB で xib の所有者を指定する場合、クラスの名前を指定しますが、クラスが定義されているファイルへのパスは指定しません。そのため、2 つのファイルのどちらが使用されているかを実際に知ることはできません。

ターゲットごとに異なる名前を使用することをお勧めします。

于 2013-09-24T02:58:22.560 に答える