0

TabBar アイコンをカスタマイズしていますが、最初のタブを除いて、カスタマイズされたタブのグラフィックが最初にクリックされるまで表示されないという問題があります。設定は Entry→VC→Tab Controller→TabVC1→TabVC2→TabVC3→TabVC4→TabVC5 です。タブコントローラーの最初の初期化でそれらを表示する最良の方法は何ですか?

** これらの属性は、タブ コントローラーに入ると設定されます (正常に動作します)。

// Set background to white for the tab bar
UIImage *tabBackground = [[UIImage imageNamed:@"tabback.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UITabBar appearance] setBackgroundImage:tabBackground];

// setting the selected color to blue
self.tabBar.tintColor = [UIColor blueColor];

// changing the tab bar text color
[[UITabBarItem appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor blackColor], UITextAttributeTextColor,[UIFont fontWithName:@"Copperplate-Bold" size:0.0], UITextAttributeFont, nil] forState:UIControlStateNormal];

** これらは個々の TabVC で設定されます (タブが最初にクリックされた後にのみ表示されます)

// loading the custom icon for front and back
UITabBarItem *tabicon = [[UITabBarItem alloc] initWithTitle:@"Daily" image:[UIImage imageNamed:@"Day.png"] tag:0];
[tabicon setFinishedSelectedImage:[UIImage imageNamed:@"Day.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"Day.png"]];
[self setTabBarItem:tabicon];
4

2 に答える 2

2

まず、タブ バー コントローラーをルート ビュー コントローラーにする必要があります。つまり、ウィンドウの rootViewController です。ドキュメントから:

タブ バー インターフェイスを展開する場合、このビューをウィンドウのルートとしてインストールする必要があります。他のビュー コントローラーとは異なり、タブ バー インターフェイスは別のビュー コントローラーの子としてインストールしないでください。

また、あなたが呼び出しself.tabBarているので、UITabBarController をサブクラス化しているような気がします。これに対するドキュメンテーションのアドバイスも。

そうは言っても、最初の外観設定 (最初のコード スニペット) を行う場所であればどこでもタブ バー項目を設定できます。

たとえば、2 番目の View Controllers タブ項目を変更するには、次のようにします。

// loading the custom icon for front and back
UITabBarItem *tabicon = [[UITabBarItem alloc] initWithTitle:@"Daily" image:[UIImage imageNamed:@"Day.png"] tag:0];

[tabicon setFinishedSelectedImage:[UIImage imageNamed:@"Day.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"Day.png"]];

UIViewController *second =  [self.viewControllers objectAtIndex:1];
[second setTabBarItem:tabicon];

要点は、タブ バー ビューが表示される前に、カスタムの外観を設定する必要があるということです。

于 2013-01-05T14:24:32.973 に答える
0

指定した init メソッドでカスタム tabBarItem を設定します。このようにして、コントローラーが初期化されたときに設定され、カスタム tabBarItem を表示するために初めて表示されるまで待つ必要はありません。

たとえば、Swift の例で、コントローラーがストーリーボードに設定されている場所を次に示します。

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    self.tabBarItem = getTabBarItem(NSLocalizedString("Calendar", comment: ""), UIImage(named: "851-calendar.png")!)
}

getTabBarItem() は、UITabBarItem を返す私のカスタム関数であることに注意してください。

于 2014-12-30T01:28:46.853 に答える