2011-02-17 66 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