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];
说实话,我发现很难遵循你的应用程序结构和对象引用。