【发布时间】:2012-01-16 10:22:39
【问题描述】:
我在更改标签栏控制器时遇到了一些困难。基本上我有带有 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 控制器中我进行一些更改并按 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 打开更改后的控制器时,它不起作用。
有什么想法吗?
然后打印出来:
在更改 Tab Bar 之前 cotrollers = NULL 更改后 Tab Bar 控制器 = NULL
【问题讨论】:
-
_navigationCotroller 也是您代码中的错字吗?
-
_navigationCotroller 是主要的 UITabBarController
-
请注意那里缺少的“N”字符;) _navigationCotroller --> _navigationCoNtroller
-
调用tabBarController navigationController 有点混乱。阅读本文的每个人都会假设 navigationController 是一个导航控制器。我建议您将 tabBarController 称为 myTabBarController
标签: iphone objective-c ios uitabbarcontroller uitabbar