UItabBar更改视图控制器

我有一些改变标签栏控制器的困难。 基本上我有3个控制器的UITabBarController。 第一次当应用程序启动。 我改变一个这样的控制器:

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]; 

然后在FirstPage控制器中,我做了一些更改,然后按确定。 现在我需要再次更改控制器,这样做:

 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它不起作用。

有任何想法吗 ?

并打印这个:

改变前Tab Bar cotrollers = NULL改变后Tab Bar cotrollers = NULL

首先我假设你的意思是:

 [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]; 

说实话,我发现很难遵循你的应用程序结构和对象引用。