0

依存性注入フレームワーク「 Objection 」を使用して、xib ファイルの所有者を動的に変更しようとしています。異議がわからない場合は、xib ファイルの所有者を動的に変更したいだけであることを理解してください。

例を挙げましょう。
アプリを起動すると、クラス「MainMenuBlue」の割り当てがクラス「MainMenu」にバインドされます

[self bindBlock:^(JSObjectionInjector *context) {
        return [[MainMenuBlue alloc] init] autorelease];
} toClass:[MainMenu クラス]];

私の設定に基づいて、「MainMenuRed」や「MainMenuYellow」などにバインドすることがあります...

問題は明らかに、私のxibファイルの所有者が「MainMenu」であるため、「MainMenu」を作成することです。
奇妙ですね。:-)
xib を適切なコントローラーにリンクするエレガントな方法を知っていますか? MainMenu.xib を MainMenuBlue.xib、MainMenuRed.xib、MainMenuYellow.xib にコピーせずに

これはxibファイルを使用すると不可能だと思うので、インターフェイスビルダーから遠ざける必要があります...

重要:
これは、私のニーズを説明するための単なる例です。もちろん、実際には背景色を変更するだけではありません。

編集:
Jasper Blues のおかげでわかりました。実際、私は実際には 1 つではない問題を作成しました。
私の構成に基づいて、私はただ行う必要があります:

[[MainMenuBlue alloc] initWithNibName:@"MainMenu" bundle:nil];

また

[[MainMenuRed alloc] initWithNibName:@"MainMenu" bundle:nil];



マーティン・マガキアン

4

1 に答える 1

1

実行時に提供されるクラスと同じメッセージに応答する限り、ファイルの所有者にどのクラスが指定されているかは関係ありません。つまり、ファイルの所有者は、接続を接続するためのインターフェイスとして機能します。

バインディングを行うときは、必ずinitWithNibName:bundleを使用してください。

于 2013-03-01T10:11:34.177 に答える