TL; DR:
ストーリーボードとxibsはコレクションが含まれていますシリアライズされたオブジェクトのストーリーボードにクラスを指定すると、ストーリーボードをロードするときにそのクラスのインスタンスが取得されます。あなたが探している動作を得る方法は、ココア/ココアタッチで一般的な委任パターンを使用することです。あなたはそれに降りたときに
ロングバージョン
ストーリーボード、および同様XIB/nibファイルは、実際にエンコードされたオブジェクトのセットです。特定のビューがストーリーボード内のUICustomColorViewControllerであると指定すると、そのオブジェクトはそのクラスのインスタンスのシリアル化されたコピーとして表されます。ストーリーボードがロードされ、instantiateViewControllerWithIdentifier:
が呼び出されると、ストーリーボードで指定されたクラスのインスタンスが作成され、返されます。この時点で、あなたは与えられたオブジェクトにこだわっていますが、あなたは運が出ていません。
さまざまなことをしたいように見えるので、その機能が委任を使用して別のクラスによって処理されるようにView Controllerを設計することができます。
2つのView Controller間で異なる機能を指定するためのプロトコルを作成します。
@protocol ThingDoerProtocol <NSObject>
-(void) doThing;
@end
あなたのViewControllerにデリゲートプロパティを追加します。その後、
@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];
これは、あなたは、コントローラのデリゲートスロットに割り当てられているオブジェクトの種類を変更することにより、ビューコントローラの機能をカスタマイズできるようにする必要があります。
Psh、初心者の質問:) –
これは大きな質問です。いくつかのストーリーボードに存在するビューコントローラの既存のカップルの上にチュートリアルフローを作成する必要があるときに、私はあなたと同じことを考えていました。そう、はい、この質問+回答はストーリーボードにも適用されます。関連性:http://stackoverflow.com/questions/14111572/how-to-use-single-storyboard-uiviewcontroller-for-multiple-subclass – Jonny