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 我发现了。实际上,我创造了一个不是真正的问题。
根据我的配置,我只需要这样做:

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

或者

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



马丁马加基安

4

1 回答 1

1

文件所有者中指定的类无关紧要,只要它响应与运行时提供的类相同的消息即可。即文件的所有者只是作为一个接口来连接你的连接。

当您进行绑定时,请务必使用 initWithNibName:bundle:

于 2013-03-01T10:11:34.177 回答