2012-01-16 110 views
5

我改變標籤欄控制器有一些困難。基本上我有3個控制器的UITabBarController。第一次當應用程序啓動。我改變一個控制器是這樣的:UItabBar更改視圖控制器

NSMutableArray *muteArray = [[NSMutableArray alloc] init]; 
FirstPage *online; 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 

    online =[[FirstPage alloc] initWithNibName:nil bundle:nil]; 


}else{ 

    online =[[FirstPage alloc] initWithNibName:nil bundle:nil]; 
} 

//adding all controllers of tab bar to array 
[muteArray addObjectsFromArray:_navigationCotroller.viewControllers]; 
online.tabBarControllers = [muteArray copy]; 
//replacing object of login controller to after login controller 
[muteArray replaceObjectAtIndex:1 withObject:online]; 


[online release]; 

//setting new controllers to tab bar 
[_navigationCotroller setViewControllers:muteArray animated:YES]; 

[muteArray release]; 

然後在第一頁控制器我做了一些改變,然後按OK。現在我需要再次改變控制器,這樣做:

NSLog(@"Before change Tab Bar cotrollers = %@",self.tabBarController.viewControllers); 

[self.tabBarController setViewControllers:_tabBarControllers animated:YES]; 

NSLog(@"After change Tab Bar cotrollers = %@",self.tabBarController.viewControllers); 

[self.tabBarController.tabBarController setSelectedIndex:1]; 

_tabBarControllers是控制器時,應用程序啓動,我保存的陣列。

此代碼更改控制器,但是當我想打開更改的控制器與setSelectedIndex它不起作用。

任何想法?

和打印這樣的:

前更改標籤欄cotrollers = NULL 後更改標籤欄cotrollers = NULL

+0

_navigationCotroller也是你的代碼中的錯字? –

+0

_navigationCotroller是主要的UITabBarController – Streetboy

+0

介意那裏缺少「N」字符;)_navigationCotroller - > _navigationCoNtroller –

回答

10

首先,我假設你的意思是:

[self.tabBarController setSelectedIndex:1]; 

做不到這聽起來像問題在於你的_tabBarControllers。

什麼做以下的輸出:

NSLog(@" _tabBarControllers count = %d", [_tabBarControllers count]); 
NSArray* newArray = [NSArray arrayWithArray:self.tabBarController.viewControllers]; 
NSLog(@" newArray count = %d", [newArray count]); 

編輯: 執行以下操作成功,沒有任何問題刪除第一個標籤?

NSMutableArray* newArray = [NSMutableArray arrayWithArray:self.tabBarController.viewControllers]; 
[newArray removeObjectAtIndex:0]; 
[self.tabBarController setViewControllers:newArray animated:YES]; 

編輯2:

嘗試改變:

[muteArray addObjectsFromArray:_navigationCotroller.viewControllers]; 
online.tabBarControllers = [muteArray copy]; 
[muteArray replaceObjectAtIndex:1 withObject:online]; 

到:

[muteArray addObjectsFromArray:self.tabBarController.viewControllers]; 
[muteArray replaceObjectAtIndex:1 withObject:online]; 
online.tabBarControllers = [muteArray copy]; 

說實話,我發現很難按照你的應用程序結構和對象引用。

+0

_tabBarControllers數= 3 newArray數= 3 和 改變標籤欄cotrollers之前=( 「」, 「<第一頁:0x882b200 >」, 「」 ) 後改變標籤欄cotrollers =(空) – Streetboy

+0

沒有看到你的代碼中創建_tabBarControll這很難提供幫助。 – ader

+0

上面有代碼: online.tabBarControllers = [muteArray copy]; 這裏我複製所有默認創建的控制器。 – Streetboy

相關問題