在我们的app委托中,我们将标签栏控制器设置为根视图。初始化时,此选项卡栏通过使用setViewControllers填充了一堆选项卡,但没有任何选项卡显示,并且在记录时,确实[viewControllers count]返回0.是否有某种方法迫使tabbarcontroller更改其viewcontrollers?< / p>
编辑:添加代码
在标签栏控制器m文件中:
- (id)init
{
self = [super init];
if (self) {
FooViewController *fooViewController = [[FooViewController alloc] init];
UINavigationController *fooNavigationController = [[UINavigationController alloc] initWithRootViewController:fooViewController];
BarViewController *barViewController = [[BarViewController alloc] init];
UINavigationController *barNavigationController = [[UINavigationController alloc] initWithRootViewController:barViewController];
[self.tabBarController setViewControllers: @[fooNavigationController, barNavigationController] animated: NO];
}
NSLog(@"%d",[self.tabBarController.viewControllers count]);
return self;
}
App代表:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
CustomTabBarController *tabController = [[CustomTabBarController alloc] init];
self.window.rootViewController = tabController;
return YES;
}
答案 0 :(得分:0)
您必须设置标签栏控制器的根视图控制器。
- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated
viewControllers
要在其中显示的自定义视图控制器数组 标签栏界面。此数组中视图控制器的顺序 对应于标签栏中与控制器的显示顺序 在索引0表示最左边的选项卡,控制器在索引1处 右边的下一个标签,依此类推。
在运行时分配一组新的视图控制器时,选项卡栏控制器会在安装新视图控制器之前删除所有旧视图控制器。
答案 1 :(得分:0)
我明白了。由于我们的类继承自UITabBarController,我们只需调用self setViewControllers而不是self.tabBarController setViewControllers。