2011-09-06 75 views
1

我有一個通過IB創建的TabBar,我選擇了「創建新項目」 - >「選項卡欄應用程序」。有沒有辦法讓我通過代碼訪問其中一個TabBarItems進行自定義?通過代碼將標題/圖標等設置爲在IB中創建的TabBarItem?

在我看來,像這樣的東西: [[self.tabBarController.tabBar.items objectAtIndex:0] setTitle:@"Button one"]; 應該設置該項目的標題爲「按鈕一」,但它doesen't。標題本身不是問題(我可以通過IB來設置),但是添加Icon似乎是。

所以總結一下,我真正想知道的是:有沒有一種方法可以將圖標添加到通過IB創建的TabBarItem中?

SOLUTION: 在第一視圖中添加在viewDidLoad中,被在啓動該應用自動加載:

UITabBarController *tb = [self tabBarController]; 
[[tb.tabBar.items objectAtIndex:1] setTitle:@"Title"]; 

讓我設置第二按鈕的標題(objectAtIndex:1)。我也能夠以相同的方式設置圖像,這也適用於按鈕一(objectAtIndex:0)和三(objectAtIndex:2)。

回答

1

添加到您的viewDidLoad:方法的TabBar viewControllers之一,它應該工作:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    //Get the tabBarItem 
    UITabBarItem *tbi = [self tabBarItem]; 

    //Give it a lable 
    [tbi setTitle:@"Title A"]; 

    //create a image from a file for the tabBar 
    UIImage *i = [UIImage imageNamed:@"NiceImage.png"]; 
    //and put it on the tabBar 
    [tbi setImage:i]; 

} 
+0

智者,這工作,但只有一次你點擊TabBarItem,並加載視圖。在這之前沒有圖像:( –

+0

這太奇怪了!我只是用一個新項目測試了這個代碼,它沒有你剛剛提到的效果。 –

+0

等待!解決了,我把代碼放在第二個項目中,也就是說在加載應用程序時正在加載的項目(和視圖),因此它不起作用。然而,將代碼放在第一個視圖中,讓我訪問所有其他項目,我將編輯我的問題並進行詳細說明,謝謝 :) –

0

我從來沒有創建過IB(總是通過代碼)標籤欄,但是設置標題和圖標我使用

controller.title = @"Controller"; 
controller.tabBarItem.image = [UIImage imageNamed:@"image.png"]; 

其中controllerUIViewController加到UITabBarControllerviewControllers「數組。

+0

我會一直在代碼中創建它們從現在開始,讓我不要再遇到這樣的問題:P但現在我寧願解決這個問題,然後在代碼中重做它。 –

1

你應該能夠在TabBarItems設置圖像和標題屬性:

UITabBarItem *item = (UITabBarItem *)[tabBarController.tabBar.items objectAtIndex:0]; 
item.image = [UIImage imageNamed:@"home.png"]; 

不要忘記,UITabBar只使用Alpha值了你設定的圖像,所以如果你不」 t在圖像中有一個alpha通道,當您在標籤欄項目上設置圖像時,您可能看不到任何東西。

相關問題