具有异议的XIB中的依赖注入

时间:2013-03-01 09:55:33

标签: ios objective-c interface-builder ioc-container xib

我正在尝试使用依赖注入框架“Objection”动态更改我的xib文件所有者。如果您不知道Objection,请了解我只想动态更改我的xib文件所有者。

让我举个例子 当我启动我的应用程序时,我将类“MainMenuBlue”的分配绑定到类“MainMenu”

  

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

根据我的配置,我有时会将其绑定到“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];



Martin Magakian

1 个答案:

答案 0 :(得分:1)

只要响应与运行时提供的类相同的消息,在文件所有者中指定哪个类并不重要。即文件的所有者只是用作连接连接的接口。

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