0

私のiOSアプリケーションでは、タブ項目の数は固定されませんでした。実行時間が決定されます。私が表示しなければならない4つのタブがあるとしたら、同じUIViewControllerランタイム(4つの異なるナビゲーションコントローラの中の)の4つのインスタンスを作成する必要があります。ここでUIViewControllerの複数インスタンスを作成

は、我々は特定のビューコントローラにアクセスするために何をすべきかです:私が何をしたいか

id controller1 = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
[controller1 setTitle:@"Football"]; 
UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:controller1]; 
[arrControllers insertObject:nav1 atIndex:0]; 

は同じビューコントローラのインスタンスを持つナビゲーションコントローラの4インスタンスを持つことです。すべての4つのビューコントローラは同じ機能を果たします(1つはサッカーのビデオを表示し、1つはバスケットボールのビデオを表示します)。ストーリーボードでは、MyViewControllerは1つのビューコントローラですが、その異なるインスタンスを作成する必要があります。MyViewController

どうすればいいですか?私がそうする必要がある唯一の理由は、タブバーのタブは固定されず、それらは動的になるということです。

役立つ何かを共有してください。..

+1

はあなたがMyViewControllerの異なるインスタンスが必要なので、instantiateViewControllerWithIdentifier 4回呼び出す...例えば、サーバからのデータに応じて、独自のルーツを持つユニークなナビゲーションVCSを作成することです私はあなたの質問を明確に持っていないかもしれません。 –

+0

私のビューコントローラはストーリーボードではシングルで、タブでは異なるコントローラとして表示されます。サーバーの応答ごとに5になることがあります。 – NSPratik

+0

これはサポートされているかどうかわかりません。 'UIViewController'には、ナビゲーションコントローラを1つ返すための' navigationController'プロパティがあります。 –

答えて

1

ビューコントローラでは、一度に1つの他のビューコントローラによって含まれていてもよいです。そうでない場合でも、ユーザーがタブを変更するたびに状態を変更する必要があるため、タブ全体で同じインスタンスが必要になるとは思えません。

シンプルなセットアップは、私が思うに、

// you've figured out here that you need four tabs, based on 
// a response from the server like... 
NSArray *tabNames = @[ @"one", @"two", @"three" @"four"]; // from the server 
NSArray *tabs = [@[] mutableCopy]; 
for (NSString *tabName in tabNames) { 
    MyViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
    vc.title = tabName; 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc]; 
    [tabs addObject:nav]; 
} 
// here, tabs is an array of view controllers that can 
// be assigned to the tabBar viewControllers property 
+0

ありがとう@ダン、それを試してみましょう.. – NSPratik

+0

それは私のために役立っています。私はこれを行うつもりです。受け入れられた.. – NSPratik

関連する問題