2009-08-20 71 views
1

我有一個UITabBarController管理5個視圖控制器。我在他們的「init」方法中創建它們的標籤欄項目,以便它們將在視圖加載之前顯示。我只是想知道我該怎麼做,因爲似乎有很多方法。例如,對於我的DatePickerViewController:iPhone開發 - UIViewController標題,tabBarItem,標籤

- (id)init { 
    if((self = [super init])) { 
     // ================ THIS ========================== 
     UIImage *clockIcon = [UIImage imageNamed:@"clockicon.png"]; 
     UITabBarItem *localTabBarItem = [[UITabBarItem alloc] 
       initWithTitle:@"Date" image:clockIcon tag:0]; 
     [self setTabBarItem:localTabBarItem]; 
     [localTabBarItem release]; 
     // ================ OR THIS ======================== 
     [self setTitle:@"Date"]; 
     UITabBarItem *localTabBarItem = [[UITabBarItem alloc] init]; 
     [localTabBarItem setImage:[UIImage imageNamed:@"clockicon.png"]]; 
     [self setTabBarItem:localTabBarItem]; 
     [localTabBarItem release]; 
     // ================ OR THIS ======================== 
     UITabBarItem *localTabBarItem = [[UITabBarItem alloc] init]; 
     [localTabBarItem setTitle:@"Date"]; 
     [localTabBarItem setImage:[UIImage imageNamed:@"clockicon.png"]]; 
     [self setTabBarItem:localTabBarItem]; 
     [localTabBarItem release]; 
    } 
    return self; 
} 

我應該怎樣做?爲什麼tabBarItem和View Controller都有標題?我不認爲我需要標籤(在第一種方法中設置)。

謝謝!

+0

只是好奇,是否有一個原因,你不在IB設置? – 2009-08-20 20:59:32

+0

我不使用IB。 – mk12 2009-08-20 21:17:50

+0

我想那時你可能會走出困境。 – 2009-08-20 22:38:24

回答

1

在我看來,任何這些方法都可以,當你在一行中聲明UIImage並將它設置在不同的行中而不是全部內聯時,它可能會更易於閱讀,但最終會得到相同的結果結果。

TabBarItems有一個標題,它將顯示在標籤欄項目iteself中的文本。視圖控制器具有用於導航控制器目的的標題,視圖控制器標題在設置時顯示在NavigationControllers NavBar中。而且你確實需要標籤,標籤就是你在別人點擊按鈕時分開按鈕的方式(當你自己管理TabBar時)。

+0

1:我沒有管理標籤欄,UITabBarController是。 2:viewController.title屬性不適用於導航控制器,UIViewController的標題也有viewController.navigationItem.title屬性。那麼Controller的title屬性是什麼? – mk12 2009-08-20 20:40:44

+0

它的NavigationController知道什麼標題顯示在導航欄上時,它推動視圖控制器(無論如何一個函數)。請閱讀它在這裏http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html它說更新導航欄 – Daniel 2009-08-20 20:43:29

+0

它說,我引用「如果沒有自定義標題視圖被設置,導航欄顯示一個包含視圖控制器默認標題的標籤,這個標籤的字符串通常從視圖控制器本身的title屬性中獲得,如果你想顯示與視圖相關的標題控制器,而是設置視圖控制器的導航項目的標題屬性。「 – Daniel 2009-08-20 20:45:23

0

有幾種方法來設置標題的原因是convienece。您可能希望在導航欄中顯示一個標題並在標籤欄中顯示一個標題。

這實際上很常見,因爲在標籤欄中顯示文本的空間較少。

像可可的許多事情一樣,有多種方法可以做到這一點。你需要關注的唯一「正確性」是最適合你的情況。

+0

但是,*視圖控制器的*標題有什麼意義?如果標籤欄項目和導航項目已經有自己的標題... – mk12 2009-08-21 04:06:53