带有异议的XIB中的依赖注入
Posted
技术标签:
【中文标题】带有异议的XIB中的依赖注入【英文标题】:Dependency injection in XIB with Objection 【发布时间】:2013-03-01 09:55:33 【问题描述】:我正在尝试使用依赖注入框架“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 文件是不可能的,所以我必须远离界面生成器......
重要: 这只是一个例子来说明我的需要。当然在现实中我不只是改变背景颜色。
编辑: 多亏了贾斯珀布鲁斯,我才知道。实际上我创造了一个不是真正的问题。 根据我的配置,我只需要这样做:
[[MainMenuBlue alloc] initWithNibName:@"MainMenu" bundle:nil];
或
[[MainMenuRed alloc] initWithNibName:@"MainMenu" bundle:nil];
马丁马加基安
【问题讨论】:
【参考方案1】:文件所有者中指定的类无关紧要,只要它响应与运行时提供的类相同的消息即可。即文件的所有者只是作为一个接口来连接你的连接。
当您进行绑定时,请务必使用 initWithNibName:bundle:
【讨论】:
碧玉蓝调 谢谢。我只需要从以下位置创建对象: [[MainMenuBlue alloc] initWithNibName:@"MainMenu" bundle:nil];在一种情况下或 [[MainMenuRed alloc] initWithNibName:@"MainMenu" bundle:nil];在另一种情况下。以上是关于带有异议的XIB中的依赖注入的主要内容,如果未能解决你的问题,请参考以下文章