5つのタブ項目を持つタブバーを作成しています。プログラムでタブバーを作成しました。デフォルトの画像(その他)をタブバー項目に設定したい。IBを使用してタブバーを作成する場合、識別子を「詳細」として選択しますが、プログラムでそれを行うにはどうすればよいですか?
1 に答える
0
この目的のために、親クラスが UITabBar になるクラスを作成する必要があります。
その .h ファイルは次のとおりです。
#import <UIKit/UIKit.h>
@interface ImageTabBar : UITabBar
{
}
@end
そして、これがその .m ファイルです。
#import "ImageTabBar.h"
#import "GlobalVars.h"
@implementation ImageTabBar
- (void) drawRect:(CGRect)rect
{
UIImage *tabImage;
switch (intTabBarSelectedIndex)
{
case 0:
tabImage=[UIImage imageNamed:@"TabBarImageTwitter.png"];
[tabImage drawAtPoint:CGPointMake(0, 0)];
break;
case 1:
tabImage=[UIImage imageNamed:@"TabBarImageCalender.png"];
[tabImage drawAtPoint:CGPointMake(0, 0)];
break;
case 2:
tabImage=[UIImage imageNamed:@"TabBarImageStanding.png"];
[tabImage drawAtPoint:CGPointMake(0, 0)];
break;
case 3:
tabImage=[UIImage imageNamed:@"TabBarImageNews.png"];
[tabImage drawAtPoint:CGPointMake(0, 0)];
break;
case 4:
tabImage=[UIImage imageNamed:@"TabBarImagePhotos.png"];
[tabImage drawAtPoint:CGPointMake(0, 0)];
break;
default:
break;
}
}
- (void)dealloc
{
[super dealloc];
}
@end
声明では:
switch (intTabBarSelectedIndex)
intTabBarSelectedIndex はグローバル変数として定義され、整数型です。
ここで、TabBarController クラスに移動します。
ここにその.hファイルがあります
#import <UIKit/UIKit.h>
@class ImageTabBar;
@interface TabBarViewController : UIViewController <UITabBarControllerDelegate>
{
ImageTabBar *objOfImageTabBar;
IBOutlet UITabBarController *uiTabBarC;
}
@property (nonatomic, retain) IBOutlet UITabBarController *uiTabBarC;
- (void)setNeedsDisplay;
@end
そして、これがその.mファイルです
TabBarController クラスの .m ファイルに次の関数を含めます。
- (void)viewDidLoad
{
[self.navigationController setNavigationBarHidden:YES];
self.view = uiTabBarC.view;
uiTabBarC.selectedIndex = intTabBarSelectedIndex;
uiTabBarC.delegate = self;
[super viewDidLoad];
}
#pragma mark TaBarViewController delegate
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
intTabBarSelectedIndex = uiTabBarC.selectedIndex;
UITabBar *aTabBar = tabBarController.tabBar;
[aTabBar setNeedsDisplay];
}
- (void)setNeedsDisplay
{
}
これを正確に行うと、コードは完全に実行されます。
于 2010-12-09T07:00:11.290 に答える