2009-08-20 9 views
1

私は5つのView Controllerを管理するUITabBarControllerを持っています。私は彼らの "init"メソッドでタブバー項目を作成して、ビューがロードされる前にそれらが表示されるようにします。そんなに多くの方法があるように思うので、私はそれをどうすればいいのだろうと思っているだけです。たとえば、私のDatePickerViewControllerの場合:iPhone Dev - UIViewController title、tabBarItem、tag

- (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でこれを設定していない理由はありますか? –

+0

私はIBを使用していません。 – mk12

+0

私はそれを難し​​くするためにあなたの道から出ているかもしれないと思います。 –

答えて

1

私の考えでは、これらの方法のいずれかが大丈夫です.1行でUIImageを宣言し、すべてのインラインではなく別の行に設定すると読みやすくなりますが、最後に同じものが得られます結果。

TabBarItemsには、タブバーアイテムitelelfに表示されるテキストであるタイトルがあります。 View ControllerにはNavigation Controllerのタイトルが付いています。NavControllerのNavBarにView Controllerのタイトルが表示されます。そして、あなたはタグを必要とします。タグは、誰かがボタンをクリックしたときに(あなたがTabBarを自分で管理しているときに)ボタンを離して指示する方法です。

+0

1:私はタブバーを管理していません、UITabBarControllerはです。 2:viewController.titleプロパティはナビゲーションコントローラ用ではなく、UIViewControllerのtitleControl.navigationItem.titleプロパティもあります。したがって、View Controllerのtitleプロパティは何ですか? – mk12

+0

NavigationControllerが、View Controller(いずれにしても1つの関数)をプッシュするときにNavbarに表示するタイトルを知るためのものです。ここでそれを読んでhttp://developer.apple.com/iphone/library/documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.htmlここでは、ナビゲーションバーを更新すると – Daniel

+0

それは言う、と私は引用 "カスタムタイトルこのラベルの文字列は、通常、ビューコントローラ自体のtitleプロパティから取得されます。ビューに関連付けられたタイトルとは異なるタイトルを表示する場合は、コントローラの代わりに、View Controllerのナビゲーション項目のtitleプロパティを設定してください。 " – Daniel

0

タイトルを設定するいくつかの理由があるのは、コンビニエンスのためです。ナビゲーションバーには1つのタイトルを表示し、タブバーには1つのタイトルを表示することができます。

これは実際には非常に一般的なことです。タブバーにテキストを表示するスペースが少なくなるからです。

ココアの多くのものと同様、複数の方法があります。あなたが心配する必要がある唯一の「正確さ」は、あなたの状況に最も適したものです。

+0

しかし、View Controllerの*タイトルのポイントは何ですか?タブバーアイテムとナビゲーションアイテムに既に独自のタイトルがある場合... – mk12

関連する問題