我正在尝试使用依赖注入框架“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
答案 0 :(得分:1)
只要响应与运行时提供的类相同的消息,在文件所有者中指定哪个类并不重要。即文件的所有者只是用作连接连接的接口。
进行绑定时,请务必使用initWithNibName:bundle: