現時点では「公式」な方法はありませんが、いくつかのトリックを使用して行うことができます。
1)通常の方法で、ビューコントローラをペン先のタブバーに追加します。ペン先フィールドは空のままにします。
2)ストーリーボードを作成し、ビューコントローラーを追加します。クラスを設定し、ストーリーボードIDを設定します(この例では「theID」を使用します)
3)実装またはインターフェースの外部で静的bool変数を.mファイルに追加します
static BOOL aFlag = NO;
4)viewcontrollerクラスでこのメソッドをオーバーライドします。
- (id) awakeAfterUsingCoder:(NSCoder *)aDecoder
{
if (!aFlag){
aFlag = YES;
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
return [storyboard instantiateViewControllerWithIdentifier:@"theID"];
} else {
return self;
}
}
基本的に:
- タブバーのペン先からオブジェクトをロードすると、「initWithCoder」への最初の呼び出しが行われ、オブジェクトはペン先なしでロードされます
- initWithCoderの後、awakeAfterUsingCoderが呼び出され、そこでオブジェクトをストーリーボードからロードされた別のオブジェクトに置き換えます。同じクラスのオブジェクトですが、ストーリーボードにアーカイブされています
- ストーリーボードからオブジェクトをロードするときに、initWithCoderとawakeAfterUsingCoderの両方をもう一度呼び出します。フラグを使用してループを回避し、自己を返します(2回目の呼び出しでは、オブジェクトはストーリーボードから読み込まれるため、自己を返すことは問題ありません)
私は試しましたが、うまくいきました;-)必要に応じて、プロジェクトの例を示します:http ://www.lombax.it/files/testTabNib.zip