2016-07-05 93 views
0

在我的iOS應用程序中,選項卡的數量不會被修復。這將決定運行時間。假設有4個選項卡需要顯示,那麼我將不得不創建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個視圖控制器將具有相同的功能來執行(一個會顯示足球的視頻,一個會顯示籃球視頻..)意思是,在故事板中,MyViewController是一個視圖控制器,但需要創建不同的實例MyViewController

我該怎麼做?我必須這樣做的唯一原因是,tabbar的選項卡不會被固定,而是那些動態的。

請分享任何有用的..

+1

你需要MyViewController的不同實例,所以叫instantiateViewControllerWithIdentifier四次,我認爲,我可能不清楚你的問題。 –

+0

我的視圖控制器在故事板中是單一的,它將在選項卡中顯示爲不同的控制器。根據服務器的響應可能是5。 – NSPratik

+0

我懷疑這是支持。 'UIViewController'有一個'navigationController'屬性,用於返回一個導航控制器。 –

回答

1

視圖控制器可以通過一次只有一個其他視圖控制器包含。即使情況並非如此,我懷疑你會希望跨標籤的實例是同一個實例,因爲每當用戶更改標籤時都會改變它的狀態。

比較簡單的設置是從服務器響應創建獨特的根獨特的導航VCS數據,如...

// 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

謝謝@danh,讓我試試.. – NSPratik

+0

它對我有幫助。我打算這樣做。公認.. – NSPratik