tl; dr:
ストーリーボードとxibsには、シリアル化されたオブジェクトのコレクションが含まれています。ストーリーボードでクラスを指定すると、ストーリーボードをロードするときにそのクラスのインスタンスを取得できます。探している動作を取得する方法は、cocoa /cocoa-touchで一般的な委任パターンを使用することです。
ロングバージョン
ストーリーボード、および同様にxib / nibファイルは、実際には、エンコードされたオブジェクトのセットです。ストーリーボードで特定のビューがUICustomColorViewControllerであると指定すると、そのオブジェクトは、そのクラスのインスタンスのシリアル化されたコピーとして表されます。ストーリーボードがロードされinstantiateViewControllerWithIdentifier:
て呼び出されると、ストーリーボードで指定されたクラスのインスタンスが作成され、返されます。この時点で、あなたはあなたが与えられたオブジェクトで立ち往生していますが、あなたは運が悪いわけではありません。
別のことをしたいと思っているように見えるので、委任を使用して機能が別のクラスによって処理されるようにViewControllerを設計できます。
2つのViewController間で異なる機能を指定するプロトコルを作成します。
@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];
これにより、コントローラのデリゲートスロットに割り当てられているオブジェクトのタイプを変更することにより、ViewControllerの機能をカスタマイズできるようになります。