さて、ようやく適切な方法を見つけました。探していたものではなかったので、完全に満足しているわけではありませんが、機能し、高度な再利用が可能です。
1)xcodeで新しいターゲットを作成します。
2)Xcodeは、ストーリーボードの2番目のセットを作成します。
3)ストーリーボードはデフォルトで元の名前と同じ名前ですが、異なる場所にあり(xcodeによって新しく作成されました)、各ターゲットに1つずつ割り当てられています。2番目のターゲットに両方のストーリーボードが必要なため、名前を変更しました。名前を変更する必要はありません。各ターゲットが独自のストーリーボードのみを使用する場合。ただし、この場合は名前を変更する必要があります。名前を変更する場合は、ターゲットのプロジェクト設定内で新しい名前を割り当てる必要があります。うまく動作します。
4)私の場合、無料アプリのストーリーボードは基本的にルートビューコントローラーと1つのregluarビューコントローラーで構成されており、ユーザーのメインメニューとして使用できます。私の場合、完全なアプリはタブに基づいており、機能性が低下しているため、無料のアプリはそうではありません。
5)このメインメニューのビューコントローラーは、プログラムで他のストーリーボードのコントローラーを表示します。そのためには、ストーリーボード内のすべてのIDが適切に設定され、一意であることが不可欠です(!)。私の場合、このメニューはいくつかのボタンで構成されています。それらのそれぞれがIBActionを呼び出します。もちろん、代わりにテーブルなどを使用することもできます。
- (IBAction)newMinutes:(id)sender
{
// Get the storyboard named secondStoryBoard from the main bundle:
UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
// Load the view controller with its identifier string
// Change UIViewController to the appropriate class
UIViewController *theTabBar = (UIViewController *)[secondStoryBoard instantiateViewControllerWithIdentifier:@"MinutesMenu"];
// Then push the new view controller in the usual way:
[self.navigationController pushViewController:theTabBar animated:YES];
}
6)このView Controllerが起動して実行されると、独自のストーリーボード内でうまく機能し、後続のViewControllerなどに完全に移行します。
7)しかし、どこかで私はまだいくつかの変化を起こす必要があります。そのような状況では、各ターゲットのプロジェクト設定に2つのマクロを設定しました。FREE
そしてFULL
それらのマクロです。そのため、構成を使用して、プログラムによるセグエなど、わずかに異なるコードをコンパイルできます#ifdef
。
#ifdef FULL
// do this
#else
// do that
#endif
また
#ifdef FREE
// do this
#endif
願わくば、それが同じ状況でTJと他の人々を助けることを願っています。