tl;博士:
故事板和 xib 包含序列化对象的集合。在情节提要中指定一个类意味着您将在加载情节提要时获得该类的实例。获得您正在寻找的行为的一种方法是使用 cocoa/cocoa-touch 中常见的委托模式。
长版
故事板和类似的 xib/nib 文件实际上是一组编码对象。当您指定某个视图是情节提要中的 UICustomColorViewController 时,该对象表示为该类实例的序列化副本。当情节提要加载instantiateViewControllerWithIdentifier:
并被调用时,情节提要中指定的类的实例将被创建并返回给您。在这一点上,你被给予的对象卡住了,但你并没有不走运。
由于看起来您想要做不同的事情,您可以构建您的视图控制器,以便该功能由使用委托的不同类处理。
创建一个协议来指定您希望在两个视图控制器之间有所不同的功能。
@protocol ThingDoerProtocol <NSObject>
-(void) doThing;
@end
将委托属性添加到您的视图控制器:
@interface TabColor
...
@property (strong, nonatomic) thingDoerDelegate;
然后让你的新对象实现协议并做你想让他们做的事情。
@implementation RedTabDoer
-(void) doThing {
NSLog(@"RedTab");
}
@end
@implementation BlueTabDoer
-(void) doThing {
NSLog(@"BlueTab");
}
@end
然后在加载情节提要时创建并连接这些对象。
TabColor *red = [storyboard instantiateViewControllerWithIdentifier:@"TabView"];
red.thingDoerDelegate = [[RedTabDoer new] autorelease];
TabColor *blue = [storyboard instantiateViewControllerWithIdentifier:@"TabView"];
blue.thingDoerDelegate = [[BlueTabDoer new] autorelease];
然后,这应该允许您通过更改分配给控制器委托槽的对象类型来自定义视图控制器的功能。