2011-02-17 63 views
0

我被困在某物上。Three20&TabBarController

我正在使用three20和TTTNavigator示例。在哪里可以找到正在使用的TabBarController:

[self setTabURLs:[NSArray arrayWithObjects:@"tt://crush", 
               @"tt://crushes", 
               nil]]; 

创建每个选项卡。

好吧,直到这里一切正常,我的问题是,我有我的所有标签没有标题和图像。我知道如何在加载时里面- (void)viewDidLoad视图控制器设置单独的:

self.title = @"crush"; 
    UIImage* image = [UIImage imageNamed:self.title]; 
    self.tabBarItem = [[[UITabBarItem alloc] initWithTitle:self.title image:image tag:0] autorelease]; 

,但因为当你初始化应用程序,除了选择了所有选项卡是空的,这是一个问题。

任何建议如何实现。

回答

0

好,我决定了。我使用的每个视图控制器..像通常的方法-init ......但我需要更改为:

[self setTabURLs:[NSArray arrayWithObjects:@"tt://crush/1", 
               @"tt://crushes/2", 
               nil]]; 

和地图:

[map from:@"tt://crush/(init)" toViewController:[MakeCrushViewController class]]; 
[map from:@"tt://crushes/(init)" toViewController:[MyCrushesViewController class]]; 

对我来说现在它看起来很奇怪..但确定工作,不要问我为什么你需要设置1和2之前的链接..如果我设置1每个它崩溃...

+0

你必须在网址的末尾添加数字1或2,因为在你委托你有一个映射到@“tt:// crush /(init)”。如果将该映射更改为@“tt:// crush /”,它应该可以在不带参数的情况下工作。 – yeforriak 2011-02-23 17:44:13

0

这家伙在这个问题上回答了这个问题博客帖子。 1

基本上,在您的标签视图控制器中,就像访问您的视图控制器 一样,您可以不使用three20。在你的标签视图控制器implimentation文件

-(void)viewDidLoad{ 
[super viewDidLoad]; 

NSArray *tabs = [self viewControllers]; 

UIViewController *home = [tabs objectAtIndex:0]; 

home.tabBarItem.image = [UIImage imageNamed:@"redo.png"]; 

UIViewController *activities = [tabs objectAtIndex:1]; 
activities.tabBarItem.image = [UIImage imageNamed:@"restart.png"]; 
UIViewController *map = [tabs objectAtIndex:2]; 
map.tabBarItem.image = [UIImage imageNamed:@"lock.png"]; 
} 
+0

是的,但是如果您尝试在init方法中执行,则会更好。然后,tabBar上的所有图标都会在init上加载,而不是在调用viewDidLoad时加载 – david 2011-04-18 09:45:22